いま、BASEタグを使ってURLを相対指定して、簡略化をしているHTML文書があります。
このHTML内で、もう一つ別の相対指定の基準を指定する方法はあるのでしょうか?
リンクの位置関係は簡単に書くと下のようになってます。

Web Site
+-HTML文書
+-リンク先のファイル(複数)

Local
+-リンク先のファイル(多数)

Localのリンク先のファイルが多数あるので、
いちいち<A href="file:///.....と書くのがいやなので、
BASEタグによる基準をLocalのフォルダにしています。
しかし、こうするとWeb Site上へのリンクはいちいち、
<A href="http://.....と絶対指定しなければなりません。
これを回避したいのです。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

ある程度、http:// と file:// がある程度まとまっているのであれば、まとまりごとに、<BASE URL を指定してやっても良いと思います。

1HTML文書内で何度でも切り替えれるわけですから。

ぐちゃぐちゃだと、お手上げですね。
(ローカルと、WEBを両方相対にしてしまうと、両者が記述上、全く区別されていないわけですから、識別不可能です(人間でも識別不可能ですね)

ただし、1つのHTMLファイル内で、WEB上とローカルへの指定を両方しながらも、オフラインでもリンクをうまく連結するように記述することは以下の方法で出来ます。

(1)ローカルへの指定は絶対指定。file://~とする。 BASEは使わない。
(2)WEBでのサイト内の指定は全て相対指定にする。
(3)HTML内では、JavaScriptでプロトコルを判定。
   file://プロトコルなら、BASE URLをfile://~~として、相対指定をローカルへと連結させる。
   http;//プロトコルなら、BASE URLをhttp://~~として、相対指定をHTTPへと連結させる。

この方法なら、1つのファイルで、(オフラインで)ローカルファイル閲覧でも(オンラインで)該当WEB閲覧でも両方つつがなく動作します。
    • good
    • 0

仰せのことは、大体理解できました。


つまり、絶対指定で
http://... となる部分と、 file:///... となる部分を
それぞれ、相対指定したいということだと思います。

結果としては、出来ないということになります。

BASEタグのHREF属性で指定されたURLは、httpやfile、ftpのように
プロトコルごとに指定を置くことが出来ません。
一度、file:///... とすると、あらゆる相対指定に対しては、
指定文字列の前にBASEタグのHREF属性のURLを直接つなげているものと
解釈されます。

というよりも、補足された内容から察するに、BASEタグの指定を
しないほうがいいのではないかと思います。

第3者が見ることが可能なウェブ上にローカルのパスを表示することの
理由が見いだせないこともあります。
アップするディレクトリ構成をそのままローカルに用意し、
ローカルのファイルも、この構成に矛盾しない位置においてから
表示するように工夫すれば、敢えてBASEタグをつける必要は
無いと思うのですが。

いかがでしょう?

この回答への補足

やっぱり出来ないのですかね・・・。

最後のご指摘ですが、実はウェブサイトの構成の原本は、Cドライブにあって、リンク先のローカルファイルはDドライブにあるので、相対指定出来ないんですよ(^^;
それとも出来るのかなぁ~?<CドライブからDドライブへの相対指定。

敢えて全てを相対パスにしたい理由は、ウェブサイトの構成の方は、サーバがいつでも簡単に変えられたり、ローカルで確認しやすいため。
ローカルファイルのほうは、リンクしたい理由があって、かつ基準となるフォルダが移動する可能性があるため。
・・・なんです(^^;

補足日時:2001/09/09 00:52
    • good
    • 0

もしかしたら、BASEタグを変更せずに、アップロードしているのは


無いでしょうか?アップロードしたHTMLファイルの位置をアドレス欄
などから参照して、BASEタグのHREF属性を、適当な位置に書き換える
必要があります。

例えば、表示しているページが、"http://hogehoge.gov/me/hoge.html"
としたとしましょう。このとき、BASEタグのHREF属性には
"http://hogehoge.gov/me/"を設定するのが適当です。

いかがでしょうか?

この回答への補足

たぶん、No.1のかたもNo.2のかたも、誤解されていると思いますが、

BASEタグのhrefにLocalのURL(file:///...)を指定しているHTMLをウェブサイト上に置いた状態で、敢えてLocalのファイルをリンクして使おうとしているのです。
しかも、そのHTML上から、「そのHTMLがあるサーバ上の別のHTMLファイル」などに対しても複数のリンクがあるのです。
この時「サーバ上の別のHTMLファイルなどに対する複数のリンク」を絶対URLで指定せずに相対指定することによって、このウェブサイトのコピー(というか原本)がローカルにある時に、オフラインでの閲覧を可能にしたいのです。

補足日時:2001/09/08 22:11
    • good
    • 0

htmlタグの解説本に書かれているとは思いますが、表示されているファイルから


リンク先のファイルまでが同じサーバ上であれば、相対ディレクトリ指定で
指定できますが.....

同一ディレクトリのa.htmファイルへのリンク
<a href="./a.htm">~</a>

imageディレクトリ内のa.htmファイルへのリンク
<a href="./image/a.htm">~</a>

1階層上にあるディレクトリにあるa.htmファイルへのリンク
<a href="../a.htm>~</a>

もちろんこれは、別サーバへのリンクの場合は絶対指定しかできません。
(まぁ、当たり前ですね。)

この回答への補足

もちろん、上で書いた'Web Site'というのは同一サーバ上です。
しかし、BASEタグで基準をLocalにしている為、全てのAnchorに対して、
Localが基準にされてしまいます。

補足日時:2001/09/08 16:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTMLのでリンクが開かない…

 作成したHTMLファイルを実行して時々 起こる現象なのですが…

 同じフォルダ内に、たとえば、[xxx.html]と[yyy.html]の2つのファイルがあって、単独ではそれぞれ問題なく開くのですが、HTMLの中に次の2つの文を記述して、これを実行した時に、[yyy]は開くのに、[XXX]がどうしても開かないことがあります。

   <a href="xxx.html">XXX</a>
   <a href="yyy.html">YYY</a>

 記述の文字に問題がないように、文章作成する際に、両方の<a href="...">~</a>をコピペして、ファイル名もフォルダに表示されるファイル名をわざわざコピーして<a href="...">に貼り付けています。つまり、記述上は問題がないようにしています。

 この現象はオフライン(WEBに乗せていない状態)でも起こるのですが、WEBにアップロードしても同じように開けません。また、特定のHTMLファイルでなく、HTML文を作っていて時々起こります。

 どうしてなのでしょうか…? 理由と解決方法をお教えください。よろしくお願いします。

 作成したHTMLファイルを実行して時々 起こる現象なのですが…

 同じフォルダ内に、たとえば、[xxx.html]と[yyy.html]の2つのファイルがあって、単独ではそれぞれ問題なく開くのですが、HTMLの中に次の2つの文を記述して、これを実行した時に、[yyy]は開くのに、[XXX]がどうしても開かないことがあります。

   <a href="xxx.html">XXX</a>
   <a href="yyy.html">YYY</a>

 記述の文字に問題がないように、文章作成する際に、両方の<a href="...">~</a>をコピペして、ファイル名もフォルダに...続きを読む

Aベストアンサー

href="75h/..." を、href="./75h/..." に修正してみてください。

それから、lintで既に確認済かもしれませんが、タグの誤使用が気になりました。
<li>タグは単独では使用できません。
<td>
<ul>
<li>内容。。。
</ul>
</td>
のように記述します。

で、本題ですが、ローカルの拡張子が違っているといった問題ではありませんか?
.htmであるはずが、.htm.txtになっている、など。

URLエンコードするとどうなりますか?
「 - 」→「 %2D 」
「 _ 」→「 %5F 」

"75h/WBR75H_Win-VerUP.htm"
  ↓
"75h/WBR75H%5FWin%2DVerUP.htm"

参考URL:http://validator.w3.org/check?uri=http%3A%2F%2Fmembers.at.infoseek.co.jp%2Fpersonalnet%2F

QTARGET=_blankと、

リンクに触れただけで、別ウインドウを開くには、どうしたら良いんでしょうか?
<a TARGET=_blank href=""onMouseOver="location.href='リンク先'"></a>
上は、どこが間違っているのでしょうか?
        

Aベストアンサー

<a href="" onMouseOver="window.open('リンク先')">ccc</a>
とかで良いのでは?

window.openについての詳細は書籍ネット等々で調べてください。

QHTMLリンクからPDFのしおりへリンク指定する方法

HTML<a href=\"~リンク\">からPDFのしおりへのリンク指定方法についてご存知の方がいらしたら教えていただけませんか?

PDF内の任意のページ(n)へのアンカー指定方法は「***.pdf#page=n」というところまでは分かりましたが、できればPDFの「しおり」を利用した、あるページの中のあるテキストへHTMLのアンカーリンクの様に飛ぶことができればと考えています。

条件としては、ユーザーがクリックするリンクはHTMLのa hrefです。

宜しくお願いいたします。

Aベストアンサー

http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf
こちらに末尾につけることができるパラメータが紹介されていました。
私はあまり詳しく読んでないのでしおりを利用した方法は分かりませんが、
***.pdf#page=2&view=fitH,200
などと指定すれば任意の場所へリンクを張ることはできそうです。
参考までに。

QCSS リンクのスタイル指定をせず、ブラウザのリンク色指定も無視

たびたびすみません。CSSのことで質問させて頂きます。

様々な色と文字サイズをとりまぜたテキストがあり、
その色や文字サイズをそれぞれ崩さずに
複数箇所にリンクを入れたいと思っています。

a に対してスタイル指定すると全部同じになってしまいます。
かといって、
a {
text-decoration: none;
}

Aベストアンサー

質問内容が途中で切れてしまっているので、スレッドのタイトルと本文の内容から推測します。お聞きになりたいことが違うのであれば、忘れて下さい。

サイズは特に<a>に対して更に定義し直していなければ、親要素のfont-sizeが継承されるだけですから、質問者様が問題にされているのは、「予め某かの前景色を定義したテキスト部分にリンクを貼った際、リンク色(ブラウザのディフォルト値/CSSによる汎用の定義値を問わず)を適用せず、地のテキスト・カラーをそのまま反映したい」という事かと思います。

残念ながら、<a>タグのcolorに関しては、ブラウザのディフォルト値かCSSによる定義値が必ず適用されます。リンク部分というのは、通常のテキスト部分と「視覚的に明らかに異なるスタイル(色の違い・アンダーライン等)」を与える事で、「”ここ”にハイパーリンクを設定してある」という区別をする事が必要だからです。じゃないとどこをクリックしていいのかわかりにくいですから。

---------------------------------------------------------------------
【HTML】
---------------------------------------------------------------------
<p>前の文<a href="">リンク部分</a>後の文。</p>
<p class="hoge1">前の文<a href="">リンク部分</a>後の文。</p>
<p class="hoge2">前の文<a href="">リンク部分</a>後の文。</p>
---------------------------------------------------------------------
---------------------------------------------------------------------
【CSS】
---------------------------------------------------------------------
.hoge1 {
color: #cc0000;
}
.hoge1 a {
color: #cc0000;
}
.hoge2 {
color: #009900;
}
.hoge2 a {
color: #009900;
}
---------------------------------------------------------------------
仮にこの様に設定しておくと、表示結果は上から順に:

・リンク部分はディフォルト値(汎用のスタイルが予めCSSで定義されていたらそちらの値)のリンク色が適用
・リンク部分はhoge1のテキスト色と同じ赤色が適用
・リンク部分はhoge2のテキスト色と同じ緑色が適用

となります。<a>ごとに違うclassを設定してHTML側の記述に追加するのではなく、親子関係を利用したセレクタにより振り分けています。HTML側のマークアップがサンプルの様に<p>ではなく<span>の様なインライン要素による場合であっても結果は同じです。
ただし、<a>に関してはlink・visited・hover・activeという4種類の状態がセットで考えられる為、それぞれの状態においても汎用のスタイルが先だってCSSで定義されていたらそちらの値が有効になるケース(諸環境/条件により異なるので)があるかもしれませんので、もしそちらにも影響を受けたくないのであれば、
.hoge1 a:link, .hoge1 a:visited, .hoge1 a:hover, .hoge1 a:active {
color: #cc0000;
}
と、より優先させたいセレクタの方にも疑似クラスを含めて定義して下さい。

ただし、こういうことをやってしまうと、先に述べた様に「地のテキスト」と「リンク箇所」の区別が付かなくなってしまい、ユーザビリティの面でかなりよろしくありません。ですので、色を変えないまでもせめて下線を表示させるなどして「視覚的に」そこが”リンク”である事を区別させるか、あるいはテキスト中に「(←○○○についてはここをクリック)」等の注記を添えて「内容的に」わからせるか、という様な配慮が必須です。

質問内容が途中で切れてしまっているので、スレッドのタイトルと本文の内容から推測します。お聞きになりたいことが違うのであれば、忘れて下さい。

サイズは特に<a>に対して更に定義し直していなければ、親要素のfont-sizeが継承されるだけですから、質問者様が問題にされているのは、「予め某かの前景色を定義したテキスト部分にリンクを貼った際、リンク色(ブラウザのディフォルト値/CSSによる汎用の定義値を問わず)を適用せず、地のテキスト・カラーをそのまま反映したい」という事かと思います。

残...続きを読む

Qbase hrefとlink rel

テキストエディタでhtmlを書いています。
外部cssを使うので、

<link rel="stylesheet" href="style.css" type="text/css">

をヘッダ部に入れていますが、これより上に

<base href="~">

で基準URIを指定しようとすると、cssが反映されなくなってしまいます。
先に

<link rel="~

を入れてしまうと、文法チェックで引っ掛かるのですが、どうしたら良いのでしょうか?
ソースは、

<Head>

<base href="絶対パス">

<link rel="stylesheet" href="style.css" type="text/css">

で、この後にmeta属性を入れています。
よろしくお願い致します。

Aベストアンサー

base hrefからの相対パスで<link>を指定するか、
絶対パスか絶対URLで<link>を指定してください。


このカテゴリの人気Q&Aランキング

おすすめ情報