Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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应用程序的DOM中_Javascript_Google Chrome_Google Chrome App_Code Injection - Fatal编程技术网

如何将javascript注入Chrome应用程序的DOM中

如何将javascript注入Chrome应用程序的DOM中,javascript,google-chrome,google-chrome-app,code-injection,Javascript,Google Chrome,Google Chrome App,Code Injection,我正在开发一个chrome应用程序,它可以作为基于的Arduino代码编辑器。生成一个js脚本(我们称之为output.js),该脚本包含led切换逻辑或我们希望通过arduino实现的任何其他功能,并使用browserify与其他节点依赖项一起编译。在他们的文档中,他们在index.html中静态引用这个脚本 由于我正在开发一个编辑器,允许用户编写任意代码来处理arduino,因此我正在动态生成output.js的内容。我已经成功地生成了output.js的内容,并编写了一个函数,将该数据注入

我正在开发一个chrome应用程序,它可以作为基于的Arduino代码编辑器。生成一个js脚本(我们称之为
output.js
),该脚本包含led切换逻辑或我们希望通过arduino实现的任何其他功能,并使用browserify与其他节点依赖项一起编译。在他们的文档中,他们在
index.html
中静态引用这个脚本

由于我正在开发一个编辑器,允许用户编写任意代码来处理arduino,因此我正在动态生成
output.js
的内容。我已经成功地生成了
output.js
的内容,并编写了一个函数,将该数据注入到
脚本
标记中。但是,Google Chrome抛出了一个错误:

Refused to execute inline script because it violates the following Content Security Policy directive: 
"default-src 'self' blob: filesystem: chrome-extension-resource:". 
Either the 'unsafe-inline' keyword, a hash ('sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='), 
or a nonce ('nonce-...') is required to enable inline execution. 
Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
因此,我意识到我需要执行内联javascript,这可能是一个潜在的安全漏洞。我知道它们是专门为将自定义JS或CSS注入网页而设计的,但它们在网站或网址的上下文中工作


我想在一个独立的chrome应用程序中修改dom并注入自定义JS,而不是在一些网站或选项卡的上下文中工作的chrome扩展。无论我在这方面做了多少研究,我想内容脚本对chrome应用程序来说都不是一个有效的概念。然后如何将javascript注入到chrome应用程序的DOM中。在这种情况下,除了内容脚本,我还有哪些可能的替代方案?

制作一个
manifest.json
文件可能会有所帮助,该文件包含错误消息中的哈希值

例如,您的
manifest.json
可能如下所示:

{
  "manifest_version": 2,
  "name": "arduino editor",
  "version": "1.0.0",
  "minimum_chrome_version": "46",
  "content_security_policy": "script-src 'self' 'sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='",
  "background": {
    "page": "background.html"
  }
}
更多详细信息,请参阅下面的帖子


谢谢您的快速回复,杰夫。我有一个类似的
manifest.json
,但是
output.js
的内容可以动态更改,因此我不能在manifest中硬编码
sha256
签名,因为一旦脚本被修改,签名就会无效。你能在构建系统中重新计算
sha256
吗?即使我可以,我必须用新签名更新
清单
。我不认为在运行时对chrome应用程序来说这是一个可行的选项。chrome应用程序可能会声明一个。您可以尝试开发人员在其中创建一个函数,该函数接受要执行的JS文件的URL。检查此项以获取更多代码参考。