在RequireJS中的任何其他代码之前加载无AMD模块?

时间:2012-06-20 10:11:25

标签: javascript module requirejs amd

如何在加载任何其他模块之前加载无AMD模块?我有一个适用于console.x的垫片,但在加载之前无法解决问题。

我也希望只在条件成立时加载它 - 所以在这种情况下因为它是一个控制台垫片,我想测试看看'console'是否未定义,然后只加载控制台垫片,如果条件是真。

注意我正在使用RequireJS并且还要使用Modernizr。

感谢。

1 个答案:

答案 0 :(得分: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的第一个脚本块必须位于使用垫片的以下脚本的单独脚本块中。

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

我在IE和Chrome上发送999(垫片值),在Firefox上发送1074.5(实际价值)。