yepnope的完整回调问题

时间:2011-09-08 07:54:50

标签: yepnope

我正在使用“两步视图”,其中我有一个布局模板(所有页面都是通用的),带有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(){...}
});

所以,问题实际上是两个:

  1. 是否在全局资源堆栈的加载完成时触发了完整的回调?因此,假设所有需要的资源都已经注册,那么在任何地方“注册”这个完整的回调是安全的吗?

  2. 我可以使用“完整”回拨选项安全地拨打yepnope吗?我的意思是,只要我没有“测试”任何东西,我的资源已经注册了......

  3. 我已经尝试了它并且它有效,但我不完全清楚它是否是内部构件,所以我只是想确保我没有做错事......提前致谢。

    -

    最后一件事。 预加载下的manual说:

    yepnope({
        load: 'preload!jquery.1.5.0.js',
        callback: function (url, result, key) {
            window.jQuery; // undefined (but it's cached!);
        }
    });
    

    你能解释一下这是什么意思吗?我完全忽略了这一点......

2 个答案:

答案 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()

对于最后一个问题,我不能说什么,因为我没有成功预装!工作,也许它是马车,也许我不明白它是如何工作的......