2014-10-05 73 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,所以我認爲你可以像在主窗口中一樣通過