首页 > 解决方案 > 在 Chrome 扩展打开的窗口中运行内联脚本

问题描述

我正在制作 Chrome 扩展并在那里使用以下代码:

var wnd = window.open()
wnd.document.write("<script>console.log(123)</script>")

当我运行它时,新选项卡已打开,但由于错误未执行脚本

(未知)拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' blob: filesystem:”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-HNzGVZJz/a6AgeYzhJ2eI5ogYei3YBUxeYiDI0NUpyU=”)或随机数(“nonce-...”)。

我不知道我应该如何unsafe-inlinewindow.open.

扩展清单(如果重要):

{
  "manifest_version": 2,
  "name": "My ext",
  "version": "1",

  "description": "My ext",
  "icons": {},

  "background": {
    "persistent": true,
    "scripts": ["background.js"]
  },

  "permissions": ["cookies", "http://*/*", "https://*/*", "tabs"]
}

标签: javascriptgoogle-chromegoogle-chrome-extensioncontent-security-policy

解决方案


如果页面的标记不是很丰富,可以使用 data-uri 打开页面:

var html = `<script>console.log(123)</script>`

chrome.tabs.create({
  active: true,
  url: "data:text/html," + encodeURIComponent(html)
}, tab => {})

推荐阅读