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

1 回答 1

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

你绝对是对的,自动加载处理会更方便。

于 2012-03-18T22:31:52.773 回答