$("#register").click(function()
{
yepnope({
load: ['js/join.js', 'css/join.css', 'css/join_form.css'],
});
$('#midcol').load('join.htm');
});
单击注册链接时,yepnope会加载按预期列出的文件。当点击注册链接时,第二个,第三个,第四个等...时间yepnope抛出以下内容
错误:
无法转换JavaScript参数arg 0 [nsIDOMHTMLHeadElement.insertBefore]
JS / yepnope / yepnope.js
第248行
我的印象是yepnope只会加载文件,如果它不存在?我是否需要对我想用yepnope加载的每个文件运行检查?如果是这样的话,这似乎有点令人生畏。
在网上搜寻HOURS时,我找不到解决问题的方法。但是,我遇到了CURL.js.它的占地面积相当小。我能够毫无问题地加载我的依赖项。下面是加载依赖项的代码示例。
var cnf = {
baseUrl: 'scripts',
pluginPath: 'curl/plugin',
paths: {
curl: 'curl/src/curl',
},
};
curl(cnf, ['js!join.js!order', 'domReady!'], function () {
$("#register").click(function(){
$("#midcol").load("join.htm");
});
});
答案 0 :(得分:1)
根据我的经验,如果有可能将脚本加载两次,则必须运行检查。这对我来说似乎是一个相当罕见的案例。
在我正在处理的网站上当我遇到这种情况时,用户在通过AJAX加载的几个部分之间来回切换并且每个部分都有自己的脚本集。用户可以先加载任一部分。
我将我的脚本设置为模块,因此很容易做到这一点:
// Section A loaded
yepnope([{
test: window.One,
nope: 'js/One.js'
},{
test: window.Two,
nope: 'js/Two.js'
}]);
// Section B loaded
yepnope([{
test: window.One,
nope: 'js/One.js'
},{
test: window.Three,
nope: 'js/Three.js'
}]);
你自动加载处理这一点肯定是对的。