2 に答える
このデモbaseでわかるように、タグやファンシーボックスなどを使用しても競合はまったくありません...また、以前に提案されたように、(存在しない) 問題をハッキングまたは修正するために追加の javascript/jQuery を使用する必要はありません。
ただし、タグは、アンカータグや、および/またはタグを含むbaseすべての相対パスに影響することを明確に理解していると思います。つまり、 and/or属性を使用するすべてのタグです。<a><link><script><img />hrefsrc
そうは言っても、次のシナリオを検討してください。
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 を探して、#代わりに分割する必要があります。