2 に答える
このデモbase
でわかるように、タグやファンシーボックスなどを使用しても競合はまったくありません...また、以前に提案されたように、(存在しない) 問題をハッキングまたは修正するために追加の javascript/jQuery を使用する必要はありません。
ただし、タグは、アンカータグや、および/またはタグを含むbase
すべての相対パスに影響することを明確に理解していると思います。つまり、 and/or属性を使用するすべてのタグです。<a>
<link>
<script>
<img />
href
src
そうは言っても、次のシナリオを検討してください。
test.html
というサブディレクトリにあるページがあるとしますsandobox
。そのようなページのフル パスはhttp://somesite.com/sandbox/test.html
、正しいですか?
test.html
次のような相対パスを使用して、内部から fancybox をロードしているとします。
<link rel="stylesheet" type="text/css" href="fancybox/jquery.fancybox.css" />
<script type="text/javascript" src="fancybox/jquery.fancybox.js"></script>
...これは、次の絶対パスを使用するのと同じです:
http://somesite.com/sandbox/fancybox/jquery.fancybox.css
そしてhttp://somesite.com/sandbox/fancybox/jquery.fancybox.js
それぞれ。
base
ここで、次のようなタグを追加することにした場合:
<base href="http://somesite.com/" />
... fancybox ファイルへの呼び出しを含むすべての相対パスは、次のように変換されます。
http://somesite.com/fancybox/jquery.fancybox.css
とhttp://somesite.com/fancybox/jquery.fancybox.js
。
fancybox ファイルは実際にはsandbox
サブディレクトリの下にあるため、ドキュメントはそれらを読み込むことができず (base
タグが原因で)、fancybox の実装は失敗します。
競合を解決するには、次のいずれかを実行できます。
<link>
and<script>
タグで絶対パスを使用するか、- パスに関連してファイルを再配置します
base
。
base
タグに関するこの良い質問/回答を確認してください<base> html タグを使用することをお勧めしますか?
誰かがまだこれに遭遇した場合。ファンシーボックスで base href を使用すると、実際には競合があります。
Fancybox には、href
クリックされた要素の を調べて#
シンボルをチェックし、タイプがインラインとして設定されていることが判明した場合にチェックがあります。
https://github.com/fancyapps/fancyBox/blob/master/source/jquery.fancybox.js#L303
これは を使用しなくても問題なく動作し<base href>
ますが、それを使用すると、href
属性はハッシュ付きの完全な URL を返すhref.charAt(0) === '#'
ため、最初のチャットは ではなく#
、おそらく h.
おそらく、チェックcharAt(0) === '#'
する代わりに、 a を探して、#
代わりに分割する必要があります。