1

HTML マークアップのスクリプト タグからjquery.min.jsを読み込めない従来の Web アプリの状況があるため、別の既存のスクリプト ファイルでいくつかの js を使用して読み込む必要があります。

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
script.type = 'text/javascript';
head.appendChild(script);

問題は..インクルードのロードが遅いとき..実行しようとしてjQueryを見つけることができないjQuery関数(ページに動的にロードされる)があります

jquery.min.js インクルード ファイルが CDN からのダウンロードを完了した後に、上記のコードでコールバックを実行するクロス ブラウザーの方法はありますか? ありがとう、

編集:

Mike のコードを使用すると、これはIE 8 以前を除くほぼすべてのブラウザのonloadで動作します..およびonreadystatechangeを必要とする他のブラウザ

ここでJSFIDDLE:

http://jsfiddle.net/BmyGC/

4

2 に答える 2

3

試す

if(script.onreadystatechange)
  script.onreadystatechange = function()
  {
      if(script.readyState == "complete"  || script.readyState=="loaded")
   {
   script.onreadystatechange = false;
       console.log("complete");
   }
  }
 else
 {
    script.onload = function()
    {
        console.log("complete");
    }
 }
于 2011-12-09T05:41:46.600 に答える
0

jquery ベースのコードを別の別の JavaScript ファイルに入れ、jquery.min.js をロードするのとまったく同じ方法でそのファイルをロードします。jquery.min.js の直後に実行してください。それはうまくいくはずです。

編集

さて、それはうまくいかないので、これを試してください:

function jqChecker()
{
  if (! jQuery )
  {
    setTimeout(jqChecker, 500); // adjust as needed.
  }
  else
  {
   // insert code to dynamically load your external js file here
  }
}
jqChecker();
于 2011-12-09T05:24:20.030 に答える