0

jqueryタグを挿入します

    var newScript = document.createElement("script");
        newScript.id = "grazit_jq";
        newScript.type = "text/javascript"           
        newScript.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js";
        script.parentNode.appendChild(newScript);

その後、jqueryが存在するかどうかを確認したいと思います。

私はいくつかの方法でそうします.1つの方法は次のようなものです:

     var checkJquery=function(){
        if(typeof(jQuery) === 'undefined')
        {
           console.log('jQuery doesnt exist');
            window.setTimeout(arguments.callee,1000);
            return;
        }
        else{
        sprk_lib=new sprk();
           sprk_lib.load(jQuery);
        }
    };
  sprk.prototype.load=function($){


 console.log($);

}; UPDATE 今、私はコードを更新しました。jQuery オブジェクトが利用可能になるとすぐに関数が呼び出されます。

その関数で、jquery コードを実行します。問題があると思いますか?そんなことしていいの?

オリジナル

私はそこで待っています。問題は、コンソール ログで null が返され、出力 jQuery が存在することです。jquery が読み込まれるまでスクリプトを停止し、スクリプトの実行を続行するにはどうすればよいですか?

4

1 に答える 1

2

スクリプトが完全に読み込まれるまで起動しない信頼性の高いコールバックを提供する、 LABjsLazyLoadなどの確立された JavaScript スクリプト ローダーの使用を検討してください。

この 5 つの JavaScript スクリプト ローダーの概要を確認してください。

例えば:

LazyLoad.js('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', function () {
  console.log('jQuery exists!');
  console.log('Document title: ' + $("title").text());
});

1 つの注意点 - jQuery が読み込まれるまでそれ以降のすべてのスクリプトの実行を延期したい場合は、スクリプトの残りの部分をこのコールバック関数内に置くことができます。ただし、それはベスト プラクティス (関心の分離、疎結合など) の負荷全体を壊すため、既存の関数をコールバックとして渡すことをお勧めします。これにより、他の関数などを呼び出すことができます。たとえば、次のようになります。

function doSomething() {
  console.log('I am doing something!')
  doSomethingElse();
}

function doSomethingElse() {
  console.log('I am doing something else!');
}

LazyLoad.js('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', doSomething);

アプリケーション アーキテクチャをさらに改善することもできますが (たとえば、PubSubを導入することにより)、それはこの質問の範囲外になるため、そのままにしておきます。

于 2013-02-05T11:29:06.597 に答える