jquery yepnope在加载同一文件两次时抛出错误

时间:2012-02-14 23:55:26

标签: jquery yepnope

                $("#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");    
     });
});

1 个答案:

答案 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'
}]);

你自动加载处理这一点肯定是对的。