我正在使用“两步视图”,其中我有一个布局模板(所有页面都是通用的),带有yepnope加载(在html头部)的jQuery和一些插件。类似的东西:
yepnope(['/path/to/jquery.js', '/path/to/jquery.plugin-common.js']);
有时我需要另一个插件,所以在内部模板中我做了额外的(在html主体中):
yepnope('/path/to/jquery.plugin-additional.js');
现在我需要做真正的js魔术,我可以安全地做到:
yepnope({
complete: function(){...}
});
所以,问题实际上是两个:
是否在全局资源堆栈的加载完成时触发了完整的回调?因此,假设所有需要的资源都已经注册,那么在任何地方“注册”这个完整的回调是安全的吗?
我可以使用“完整”回拨选项安全地拨打yepnope吗?我的意思是,只要我没有“测试”任何东西,我的资源已经注册了......
我已经尝试了它并且它有效,但我不完全清楚它是否是内部构件,所以我只是想确保我没有做错事......提前致谢。
-
最后一件事。 预加载下的manual说:
yepnope({
load: 'preload!jquery.1.5.0.js',
callback: function (url, result, key) {
window.jQuery; // undefined (but it's cached!);
}
});
你能解释一下这是什么意思吗?我完全忽略了这一点......
答案 0 :(得分:2)
我可以帮助预加载!题。 预加载的想法!是的,yepnope将下载该文件,但不会执行它。 它传输jQuery文件,但在调用回调后它仍然是未定义的,因为它没有作为脚本注入到页面中。
答案 1 :(得分:0)
在我看来,你做错了。我很惊讶它工作,但也许你的脚本在调用“完整”功能之前加载。我认为你应该这样做:
yepnope({
load: ['/path/to/jquery.js', '/path/to/jquery.plugin-common.js']
callback: {
"jquery.js": function () {
console.log("jquery loaded!");
},
"jquery.plugin-common.js": function () {
console.log("plugin loaded!");
}
}
});
对于html正文中的附加插件:
yepnope({
load: '/path/to/jquery.plugin-additional.js'
callback: function () {
$(document).ready(function(){
console.log("plugin-additional loaded!");
});
}
});
当然,请使用与您在此上下文中可以安全执行的每个插件相关的代码替换console.log()
。
对于最后一个问题,我不能说什么,因为我没有成功预装!工作,也许它是马车,也许我不明白它是如何工作的......