3

我正在使用“两步视图”,其中我有一个布局模板(所有页面通用),带有 jQ​​uery 和一些插件的 yepnope 负载(在 html 头中)。就像是:

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 吗?我的意思是,只要我不“测试”任何东西并且我的资源已经注册......

我已经尝试过并且它有效,但我不完全知道它是否是内部的,所以我只是想确保我没有做错什么......在此先感谢。

--

最后一件事。预载下的手册!说:

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

你能解释一下这是什么吗?我完全错过了这里的重点......

4

2 回答 2

2

我可以帮助预加载!问题。预加载的想法!是 yepnope 将下载文件但不会执行它。它传输 jQuery 文件,但在调用回调后它仍然是未定义的,因为它没有作为脚本注入到页面中。

于 2012-02-13T22:45:09.000 回答
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()为与您可以在此上下文中安全执行的每个插件相关的代码。

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

于 2012-07-18T15:55:18.010 回答