1

jQuery1.3を使用するクライアントのWebサイトにロードするjQuery1.8を使用して作成したjavascriptウィジェットがあります。本当に醜いハックなしでは、IEでnoConflictを正しく動作させることはできません。ウィジェットがレンダリングされた後のページは次のようになります。

<html>
<head>
   <script type="text/javascript" src="http://code.jquery.com/jquery-1.3.min.js"></script>
</head>
<html>
<body>
   <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
   <script>
     $jq = $.noConflict();
   </script>
</body>
</html>

Chromeでは、これはうまく機能し、$jqはjQuery1.8.3として定義されますが、IE 8ではこれは機能せず、$jqはjQuery1.3として定義されます。私の推測では、タイミングの問題であり、新しいjQueryがロードされる前にスクリプトが実行されます。いくつかのコールバックタイマーを入れて動作しますが、コールバックタイマーを組み込むことが正しい方法だとは想像できません。

何か案は?

編集

jQuery1.3に名前空間を付けることはできません。クライアントはページ全体でそれを使用し、アップグレードしたくありません。

4

2 に答える 2

0
<!-- load jQuery 1.5 -->
<script type="text/javascript" src="http://foo.com/jquery-1.5.js"></script>
<script type="text/javascript">
var jQuery_1_5 = $.noConflict(true);
</script>

<!-- load jQuery 1.6 -->
<script type="text/javascript" src="http://foo.com/jquery-1.6.js"></script>
<script type="text/javascript">
var jQuery_1_6 = $.noConflict(true);
</script>

この場合 -

使用する

jQuery_1_6(document).ready(function($) {
  // Code using $ as usual goes here.
});

それ以外の

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

ここを参照してください-http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

于 2013-01-07T06:29:19.830 に答える
0

結局、javascriptローダーであるLABjsを使用することになりました。このようにして、スクリプトを同期的にロードし、それに応じてコードを実行できます。

<script>
   $LAB
   .script("framework.js").wait()
   .script("plugin.framework.js")
   .script("myplugin.framework.js")
   .wait(function(){
      myplugin.init();
      framework.init();
      framework.doSomething();
   });
</script>
于 2013-01-07T23:15:09.560 に答える