@ezmilhouse からのガイダンスを使用して、古いコードとの互換性を維持しながら、目的を達成するための最良の方法を考えました。
私の解決策は、個々の依存関係に基づいて、必要なすべてのスクリプトを階層的にロードするように yepnope スクリプトローダーをセットアップすることでした。すべてのスクリプトがロードされたらcomplete
、my call to yepnope のプロパティを使用して、ready 関数を呼び出すことができます。これは、ドキュメントの準備が整い、コードが問題なく動作することを意味していました。
また、自分の js を自分のページのベースに移動しました (かなり前にすべきことでしたが、多くのレガシー ページがありました!:))
以下に例を示します (図解のみを目的として、偽のライブラリ/スクリプト名を使用しています)。
yepnope({
test: baseLib.debug,
yep: { "max": "/version2/res/jquery/jquery-1.5.2.js" },
nope: { "min": "/version2/res/jquery/jquery-1.5.2.min.js" },
callback: {
"max": function (url, result, key) {
baseLib.Log("jQuery full loaded.");
},
"min": function (url, result, key) {
baseLib.Log("jQuery min loaded.");
}
},
complete: function () {
if (window.$) {
yepnope({
test: base.debug,
yep: {
"anotherscript": "script/url/here.js",
"anotherscript2": "script/url/here2.js"
},
nope: {
"anotherscript": "script/url/here-min.js",
"anotherscript2": "script/url/here2-min.js"
},
both: {
"anotherscript3": "script/url/here3.js"
},
callback: {
"anotherscript": function (url, result, key) {
baseLib.Log("anotherscript " + (result ? "Max" : "Min") + " loaded.");
},
"anotherscript2": function (url, result, key) {
baseLib.Log("anotherscript2 " + (result ? "Max" : "Min") + " loaded.");
},
"anotherscript3": function (url, result, key) {
baseLib.Log("anotherscript3 loaded.");
}
},
complete: function () {
baseLib.Log("Scripts Loaded");
baseLib.Page.Ready();
}
});
}
else {
baseLib.Log("Could not load jQuery. No further jQuery dependent files loaded.", "error");
}
}
});
私のページjsではbaseLib.Page.Ready
、完了時にyepnopeによって呼び出される関数を割り当てます。