[解決済み] htmlの<base>タグの推奨事項を教えてください。
質問事項
見たことがない
<base>
HTMLタグ
は、以前どこかで実際に使用されたことがあります。 その使用には、避けるべき落とし穴があるのでしょうか?
私のサイトでは、リンクを簡素化するのに便利な用途がありそうですが、最新のプロダクションサイト(あるいはどのサイト)で使われているのを見たことがないという事実が、私を不安にさせます。
編集
ベースタグを数週間使用した後、私はいくつかの
主要
baseタグを使用することで、最初の見かけよりもずっと望ましくないことが起こりました。 基本的には
href='#topic'
と
href=''
ベースタグの下にあるのは
非常に
と互換性がなく、このデフォルトの動作からの変更により、コントロール外のサードパーティライブラリが簡単に
非常に信頼性が低い
というのも、論理的にデフォルトの動作に依存することになるからです。 大規模なコードベースを扱う場合、この変更は微妙で、すぐには明らかにならない問題につながることがよくあります。 私が経験した問題の詳細については、以下の回答を作成しました。 の広範囲な展開にコミットする前に、自分自身でリンクの結果をテストしてください。
<base>
というのが私の新しいアドバイスです。
解決方法は?
baseタグの効果の内訳。
baseタグには直感的でない効果もあるようなので、以下に頼る前に、結果を意識して自分でテストすることをお勧めします。
<base>
! を発見してからは
後
URLが異なるローカルサイトを処理するためにbaseタグを使おうとして、後になってから問題のある効果を知り、がっかりしたのですが、他の人のためにこの潜在的な落とし穴のまとめを作成しなければならないと思っています。
のベースタグを使うことにします。
<base href="http://www.example.com/other-subdirectory/">
を例にして、そのコードがあるページが
http://localsite.com/original-subdirectory
専攻
リンクや名前付きアンカー、空白のhrefは、それが明示されない限り、オリジナルのサブディレクトリを指し示すことはないでしょう。 base タグは すべて のリンクは異なっており、ベースタグの url への同一ページのアンカーリンクが代わりに含まれています。
-
<a href='#top-of-page' title='Some title'>A link to the top of the page via a named anchor</a>
になる<a href='http://www.example.com/other-subdirectory/#top-of-page' title='Some title'>A link to an #named-anchor on the completely different base page</a>
-
<a href='?update=1' title='Some title'>A link to this page</a>
になる<a href='http://www.example.com/other-subdirectory/?update=1' title='Some title'>A link to the base tag's page instead</a>
多少の工夫をすれば、自分がコントロールできるリンクについては、これらのリンクがそのページにリンクするように明示的に指定することで、これらの問題を解決できますが、標準の動作に依存するサードパーティのライブラリを追加すると、簡単に大混乱を引き起こしかねません。
マイナー
条件付きコメントが必要なIE6の修正。IE6では、dom階層を台無しにしないために、条件付きコメントが必要です。
<base href="http://www.example.com/"><!--[if lte IE 6]></base><![endif]-->
として
BalusC
は、上記の回答で触れています。
というわけで、全体としては、すべてのリンクを完全に編集制御できる人でないと使いにくいという大きな問題があり、当初懸念していたとおり、それだとかえって面倒なことになりますね。 今、私は自分の使い方をすべて書き直さなければならないのです。:p
fragments"/hashes使用時の問題点検証の関連リンクです。
http://www.w3.org/People/mimasa/test/base/
http://www.w3.org/People/mimasa/test/base/results
編集者:イジー コメントについて、私と同じような混乱に陥っているすべての人のために。
今、自分でテストしてみたところ、以下のような結果になりました。
-
を使っても使わなくても、ここに挙げた例には違いがありません (
#anchor
と?query
は、単に指定された<BASE>
). -
ただし、相対リンクの場合は、末尾のスラッシュが省略されるという違いがあります。
other.html
とdir/other.html
で始まることになります。DOCUMENT_ROOT
を指定した場合。/other-subdirectory
は、(正しく)ファイルと扱われるため、省略されます。
では、相対リンクの場合。
BASE
は移動したページで問題なく動作しますが、アンカーと
?queries
の場合、ファイル名を明示的に指定する必要があります。
BASE
には、末尾にスラッシュがあるか、最後の要素が使用されているファイルの名前に対応していません)。
と考えてください。
<BASE>
を置き換えて
ファイル自体への完全なURL
(そして
ない
をクリックすると、正しく表示されます。この例で使われたファイルが、仮に
other-subdirectory/test.html
(新しい場所に移動した後)。
であれば、正しい仕様となるはずでした。
<base href="http://www.example.com/other-subdirectory/test.html
">
- et voila,
すべて
は期待通りに動作します。
#anchor
,
?query
,
other.html
,
very/other.html
,
/completely/other.html
.
関連
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] 箇条書きのない順序なしリストが必要です。
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] HTMLで表示される上下の三角形(軸のない矢印)に使用できる文字は何ですか?
-
[解決済み] HTMLの "role "属性は何のためにあるのですか?
-
[解決済み] Flexbox:水平方向と垂直方向の中央揃え
-
[解決済み] Do I use <img>, <object>, or <embed> for SVG files?
-
[解決済み] HTMLフォームのSELECTタグ/入力の読み取り専用化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CSS - カーソルを置いたときに塗りつぶしの色を変更する - SVG PATH
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] <meta charset="utf-8"> vs <meta http-equiv="Content-Type">.
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] クリアフィックスとは何ですか?
-
[解決済み] input type="file "ボタンのスタイリング
-
[解決済み] CSSだけでリンクを無効化する方法
-
[解決済み] フレックスアイテムを右寄せにするには?
-
[解決済み] Webサイトのブラウザタブアイコン(ファビコン)を追加する方法を教えてください。