4

私は jQuery を使用するツールを作成しました。このツールは、既に jQuery を使用しているページを含め、さまざまな Web ページに動的に読み込まれます。直接制御できない Web ページに jQuery をロードしようとしています。そうすると、このページが jQuery 経由で行う Ajax 呼び出しが機能しなくなります。Dailycaller.com というサイトでは、jQuery の遅延画像読み込みを使用しています。ページを下にスクロールすると、記事の画像が動的に読み込まれます。jQuery バージョンを読み込もうとすると、この動的な画像の取得が中断されます。これは、ロードした jQuery とページ自体に既にある jQuery の間のバージョンの競合が原因であると思われます。

これをテストするために、ページと同じバージョンを読み込んでみました。ページに script タグが含まれている

<script type='text/javascript' src='http://cdn01.dailycaller.com/wp-includes/js/jquery/jquery.js?ver=1.7.2'></script>

私の JS コードは、このバージョンを再度 (ページロード後に非同期で) ロードします。

var script = document.createElement( 'script' );
script.src = 'http://cdn01.dailycaller.com/wp-includes/js/jquery/jquery.js?ver=1.7.2';
document.body.appendChild(script);

このバージョンの jQuery は、理論的には既にページ上にありますが、この負荷により、ページの jQuery Ajax 呼び出しが中断されます。このページの動的な読み込みを壊さずに任意のバージョンの jQuery を読み込むにはどうすればよいですか?

ここで推奨されているように jQuery.noConflict() を使用してみました 同じページで複数のバージョンの jQuery を使用できますか? そして、それはこの問題を解決しません。

4

2 に答える 2

10

を呼び出す前に、動的に読み込まれる jQuery のコピーの読み込みを完了する必要があります.noConflict()onloadでイベントを使用し<script>ます。

デモ: jsフィドル

脚本:

var script = document.createElement( 'script' );
script.onload = function () {
    jQuery.noConflict( true ); //remove this and image load fails
};
script.src = 'http://cdn01.dailycaller.com/wp-includes/js/jquery/jquery.js?ver=1.7.2';
document.head.appendChild(script);
于 2013-03-01T19:52:31.083 に答える