外部 JS ファイル (つまり、test.js) に次のコードがあります。これにより、JQuery ソースがまだ存在しないことが検出されると、JQuery ソースを指す追加のスクリプト タグが作成されます。コードは実際に script タグを作成し、作成を行っている実際のスクリプトの前に挿入します。
if (typeof(jQuery) == "undefined") {
var head = document.getElementsByTagName("head")[0];
// get any and all script tags
var scripts = document.getElementsByTagName("script");
// the actual script call the actions (ie: this one "test.js")
thisScript = scripts[scripts.length - 1];
// create element
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
head.insertBefore(script,thisScript);
}
上記は正常に動作します。しかし、私が抱えている問題は、JQuery ソース スクリプト タグが作成されると、"test.js" の残りのコードが機能しないことです。コードが JQuery 関数にアクセスできない (または JQuery がそこにあることを知らない) ようです。
したがって、「test.js」の次のコードは機能しません。
$(document).ready(function() {
// ...
});
FF 12 の FireBug によると、「$ が定義されていません」というエラーが表示されます。
注: ターゲット ページに JQuery を配置するだけでよいことはわかっています。ただし、コードは JQuery が存在するかどうかを検出できる必要があるため、これはオプションではありません。そうでない場合は、JQuery を指すスクリプト タグを作成し、Jquery コードを実行します。