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関数を実行したくないことにも注意してください。これは、関数が数回トリガーされていることを意味している可能性があります。