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 内での新しい関数の使用はブロックされます。