3

Chrome 拡張機能のマニフェスト バージョン 2 は、通常の拡張ページでのevalまたはnew Functionの使用をサポートしなくなります。私の Chrome 拡張機能は、これらのメカニズムを利用するオプション ページで UI フレームワーク (Kendo UI) を使用しているため、解決策を探しています。

IO 2012 のこのセッションによると、対応するページをサンドボックスに入れ、iframe を介して拡張機能にロードするという考え方です。

これが私がやろうとしていることの簡単な例です: https://gist.github.com/3058943

マニフェスト.json:

{
 "name": "Sandbox test",
 "manifest_version": 2,
 "options_page": "main.html",
 "sandbox": {
    "pages": [ "index.html" ]
  }
}

main.html:

<html>
  <head></head>
  <body>
    <iframe id="iframe" src="index.html" ></iframe>
  </body>
</html>

index.html:

<html>
  <head></head>
  <body>
    <h1>Inside the sandbox</h1>
  </body>
</html>

この例のオプション ページを読み込むと、次のエラー メッセージが表示されます。

chrome-extension://fahdnpkbgfjkocogbjlljfbhnljcehoh/index.html の読み込みを拒否しています。Web ページでリソースをロードするには、リソースを web_accessible_resources マニフェスト キーにリストする必要があります。

サンドボックス化された各ページも web_accessible_resources である必要があるとは思いません。しかし、サンドボックス化されたページをマニフェスト ファイルで web_accessible_resources として定義しようとしても、サンドボックス化されたページは読み込まれますが、iframe 内での新しい関数の使用はブロックされます。

4

1 に答える 1

1

上記のエラー メッセージは、Chrome 20.0.1132.47 で発生します。

dev チャンネル バージョン 21.0.1180.15 でテストしましたが、ここではサンドボックス化された iframe が問題なく読み込まれます。

于 2012-07-06T17:59:27.927 に答える