0
if (typeof $ == "undefined"){

console.log("$ is undefined. Adding javascript element to the document");
jQs = document.createElement("script");
jQs.type = 'text/javascript';
jQs.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(jQs, s);

// Run script once jQuery is loaded
    console.log(" startScript() Start");
    jQs.onload = startScript;

}

上記のスクリプトがあります。これは、$が未定義の場合にjqueryを指すスクリプトタグを追加します。ドキュメントが始まる前にタグを挿入して、startScript関数を実行しようとしています。しかし、私が思うに、body.onloadはstartScriptを十分な速度でトリガーせず、その実行を妨げます。jqueryスクリプトタグ/ドキュメントの準備ができるとすぐにstartScriptをトリガーするイベントはありますか?

答えは、jqueryタグの準備ができていて、ドキュメントの準備ができているときはいつでもstartscriptを実行することにあると思います。しかし、効果を達成する方法がわかりません。

スクリプトにjqueryファイルが含まれていない場合、$は未定義になるため、コードを$(document).ready()に配置することは無関係な解決策であることに注意してください。

また、jqueryタグのonloadイベントでonload関数を実行したくないことにも注意してください。これは、関数が数回トリガーされていることを意味している可能性があります。

4

1 に答える 1

4
  function init() {
    if (typeof $ == "undefined"){

    console.log("$ is undefined. Adding javascript element to the document");
    jQs = document.createElement("script");
    jQs.type = 'text/javascript';
    jQs.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(jQs, s);

    // Run script once jQuery is loaded
        console.log(" startScript() Start");
        jQs.onload = startScript;

    }
}
window.onload = init;
于 2012-06-19T12:20:35.300 に答える