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

エラー メッセージに示されているように、パッケージ化されたアプリでは load メソッドと beforeload メソッドが無効になっており、サンドボックス化された iframe にも適用されます。他に無効になっているものはこちらで確認できます。

そうは言っても、サンドボックス化された iframe で dojo 1.8 を試してみたところ、アンロード リスナーを設定しない限り、単純なHello Dojo サンプルは問題なく動作するようです。

于 2013-01-10T16:36:54.280 に答える