3

在最终在打包应用程序中使用 dojo 方面取得了一些进展之后,我遇到了另一个我找不到任何文档的障碍。

{
  ...
  "sandbox": {
     "pages": ["test.html"]
  },
  "app": {
    "background": {
      "scripts": [
        "background.js"
      ]
    }
  }
}

test.html 从应用程序以及我的一些模块加载 dojo,但是当 dojo 解析页面的 dom 时,我得到了 platformApp 抛出的错误

Uncaught unload is not available in packaged apps. platformApp:14
(anonymous function)                               platformApp:14
Window.addEventListener                            platformApp:127
addListener                                        dojo.js.uncompressed.js:15317
on.parse

是否有任何 CSP 规则我可以​​添加到沙箱中以使其正常运行?

4

2 回答 2

4

我希望chrome默认这样做而不是抛出错误......但这是我在加载dojo之前必须做的:

// Prevent registrations for unload/beforeunload and warn, chrome will throw exception.
(function() {
  var windowAddEventListener = Window.prototype.addEventListener;
  Window.prototype.addEventListener = function(type) {
    if (type === 'unload' || type === 'beforeunload') {
          try {
        throw new Error('Do not use Window.addEventListener for ' + type);
      } catch (e) {
        console.error(e.message, e);
      }
    } else
      return windowAddEventListener.apply(window, arguments);
  };
})();
于 2013-04-22T15:02:23.023 回答
1

如错误消息所述,打包应用程序的加载和前加载方法被禁用,这也适用于沙盒 iframe。您可以在此处查看还有哪些被禁用。

话虽如此,我只是在沙盒 iframe 中尝试了 dojo 1.8,只要我不设置卸载侦听器,简单的Hello Dojo 示例似乎就可以正常工作。

于 2013-01-10T16:36:54.280 回答