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" ]
}
}
主.html:
<html>
<head></head>
<body>
<iframe id="iframe" src="index.html" ></iframe>
</body>
</html>
索引.html:
<html>
<head></head>
<body>
<h1>Inside the sandbox</h1>
</body>
</html>
在此示例中加载选项页面时,我收到错误消息:
拒绝加载 chrome-extension://fahdnpkbgfjkocogbjlljfbhnljcehoh/index.html。资源必须列在 web_accessible_resources 清单键中才能被网页加载。
我不认为每个沙盒页面也应该是 web_accessible_resources。但是,即使我尝试在清单文件中将沙盒页面也定义为 web_accessible_resources,沙盒页面也会被加载,但在 iframe 中使用新功能仍然被阻止。