2014-10-05 76 views
0

我正在使用Chrome应用,并且我有一个保存在应用沙箱文件系统中的脚本文件。 (它通过URL filesystem:chrome-extension_****/Persistent/script.js在Chrome应用沙盒中加载脚本文件

我能使用Chrome的FileSystemAPI读取主应用程序窗口中的文件可用。但是,我需要它是在沙盒页面访问和执行。

我有在我的清单如下 -

"sandbox": { 
     "pages": ["sandboxed_page.html"], 
     "content_security_policy": "sandbox allow-scripts;" 
}, 

而且我使用的页面是这样的:

<iframe id="sandbox_frame" seamless="seamless" src="sandboxed_page.html" sandbox="allow-scripts"></iframe>

我尝试在主应用程序窗口中加载文件,使用window.URL.createObjectURL()将其转换为blob:URL,并通过postMessage()将此URL传递给沙箱。在沙箱中,我试图将URL加载到<script>元素中。我得到一个错误,说Not allowed to load local resource: blob:chrome-extension%3A//...

另一个选项(这是工作)加载主应用程序中的script.js的内容,并通过postMessage()发送整个字符串。不确定这是一个好主意,因为script.js可能会变得很大。

我做错了什么,或者是在Chrome安全策略禁止的沙箱中加载本地脚本?

我经历了https://developer.chrome.com/apps/app_external,但没有提及将外部资源发送到沙箱。

+0

它看起来不像你在沙箱CSP中设置了一个备用脚本src,所以我认为你可以像在主窗口中一样通过