2

如何在加载任何其他模块之前加载非 AMD 模块?我有一个用于 console.x 的 shim,但在加载它之前遇到了麻烦。

我还希望仅在条件为真时才加载它 - 所以在这种情况下,因为它是一个控制台垫片,我想测试一下“控制台”是否未定义,然后只在条件为真时加载控制台垫片。

请注意,我正在使用 RequireJS 并且也有 Modernizr 可供使用。

谢谢。

4

1 回答 1

0

这个演示展示了做你想做的事情的基本方法。

以下脚本:

http://jsfiddle.net/bZB9L/6/

<script>
if ("undefined" === typeof window["mozInnerScreenX"]) {
    document.writeln("<script src=http://jsbin.com/erevub/4></scr" + "ipt>");
}
</script>
<script>
alert(mozInnerScreenX);
</script>

从此脚本导入:

http://jsbin.com/erevub/4

window["mozInnerScreenX"] = window["mozInnerScreenX"] || (function () {
    return 999;
}());

我使用mozInnerScreenX了 shim 属性,因为我机器上的所有浏览器都有console.

使用的第一个脚本块document.writeln必须位于与使用 shim 的以下脚本不同的脚本块中。

一个坏主意有很多原因document.writeln,但我不知道你的完整用例,所以这是最简单的。

999我收到有关 IE 和 Chrome(垫片值)和1074.5Firefox(实际值)的警报。

于 2012-06-20T13:07:30.810 回答