在@ezmilhouse 的指导下,我想到了实现我所追求的目标的最佳方式,同时仍保持与旧代码的兼容性。
我的解决方案是设置我的 yepnope 脚本加载器,以根据它们各自的依赖关系以分层方式加载所有必要的脚本。加载完所有脚本后,您可以使用complete
我对 yepnope 的调用的属性来调用我的就绪函数。这意味着文档已经有效地准备好了,并且代码可以正常工作。
我还将我的 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 将在完成时调用该函数。