Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome应用程序沙箱中加载脚本文件_Javascript_Google Chrome_Iframe_Google Chrome App - Fatal编程技术网

Javascript 在Chrome应用程序沙箱中加载脚本文件

Javascript 在Chrome应用程序沙箱中加载脚本文件,javascript,google-chrome,iframe,google-chrome-app,Javascript,Google Chrome,Iframe,Google Chrome App,我正在开发一个Chrome应用程序,我有一个保存在应用程序沙盒文件系统中的脚本文件。(可通过URL文件系统获得:chrome-extension.****/Persistent/script.js 我可以使用Chrome的FileSystemAPI在主应用程序窗口中读取文件。但是,我需要它在沙盒页面中可访问和可执行 我的舱单上有以下内容: "sandbox": { "pages": ["sandboxed_page.html"], "content_security_po

我正在开发一个Chrome应用程序,我有一个保存在应用程序沙盒文件系统中的脚本文件。(可通过URL
文件系统获得:chrome-extension.****/Persistent/script.js

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

我的舱单上有以下内容:

"sandbox": {
      "pages": ["sandboxed_page.html"],
      "content_security_policy": "sandbox allow-scripts;"
},
我使用的页面是这样的:

我尝试在主应用程序窗口中加载该文件,使用
window.URL.createObjectURL()
将其转换为blob:URL,并通过
postMessage()传递此URL
加载到沙盒中。在沙盒中,我试图将URL加载到
元素中。我收到一个错误,提示
不允许加载本地资源:blob:chrome扩展%3A/…

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

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


我看了一遍,但没有提到将外部资源发送到沙盒。

沙盒页面在一个唯一的源中执行,即一个与应用程序本身不同的源,并且您不能跨不同的源访问文件系统URL。从这些文件创建的对象URL也是如此


基本上,您一直使用postMessage方法,不过您可以通过将其作为ArrayBuffer传输而不是将数据作为字符串复制来提高效率。请参阅。

看起来您并没有在沙盒CSP中设置备用脚本src,因此我想您可以通过主窗口中的like加载它?