在打包的应用程序中使用dojo 1.8(未打包的卸载在打包的应用程序中不可用)

时间:2012-09-25 15:38:14

标签: google-chrome-extension

最后在使用我的打包应用程序使用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规则让这样做是正常的?

2 个答案:

答案 0 :(得分: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);
  };
})();

答案 1 :(得分:1)

正如错误消息所述,对打包的应用程序禁用了load和beforeload方法,这也适用于沙盒iframe。您可以查看禁用的其他内容here

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