4

我正在为我当前的项目使用 Require.js。

我曾经使用 require 变量加载 Require.js 配置,例如

require = {
  paths: {
    backbone: "libs/backbone-min",
    bootstrap: "libs/bootstrap.min",
    jquery: "libs/jquery-1.7.2.min",
    underscore: "libs/underscore-min",
    order: "plugins/order",
    text: "plugins/text",
    use: "plugins/use"
  }
};
<script src="http://local.gungroo.com/app/js/config.js"></script>

这在所有浏览器中运行良好。

最近,我切换到 Coffescript,生成的代码类似于

(function() {
  window.require = {
    paths: {
      backbone: "libs/backbone-min",
      bootstrap: "libs/bootstrap.min",
      jquery: "libs/jquery-1.7.2.min",
      underscore: "libs/underscore-min",
      order: "plugins/order",
      text: "plugins/text",
      use: "plugins/use"
    }
  };

}).call(this);

但第二个在 IE8 中中断。

IE8 对变量 'var require' 和 'window.require' 的处理方式不同吗?

4

2 回答 2

4

从关于配置选项的 requirejs 文档中:

注意:最好使用 var require = {} 而不要使用 window.require = {},它在 IE 中将无法正常运行。

此问题已报告给 github 上的 requirejs项目。问题报告者 (dtanabe) 提供了一些示例 html 和脚本来说明问题。我在这里创建了一个包含该示例代码的小提琴。请注意,对于 IE 9,它与其他浏览器(例如 Chrome、Firefox)的工作方式相同,但是当我将开发人员工具中的文档模式更改为 IE 8 时,问题就出现了。针对这个问题,jrburke(詹姆斯伯克)添加了我上面提到的文档。

于 2012-05-17T21:22:52.453 回答
0

在网络浏览器中:

window.require = 'herp';
// is equivalent to
require = 'derp';

window作为最高水平。

于 2012-05-17T09:49:02.103 回答