javascript - 在 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-inline
在window.open
.
扩展清单(如果重要):
{
"manifest_version": 2,
"name": "My ext",
"version": "1",
"description": "My ext",
"icons": {},
"background": {
"persistent": true,
"scripts": ["background.js"]
},
"permissions": ["cookies", "http://*/*", "https://*/*", "tabs"]
}
解决方案
如果页面的标记不是很丰富,可以使用 data-uri 打开页面:
var html = `<script>console.log(123)</script>`
chrome.tabs.create({
active: true,
url: "data:text/html," + encodeURIComponent(html)
}, tab => {})
推荐阅读
- wpf - 在 UserControl 中设置 ImageSource 不起作用
- python - 如何解决socketio使用Sec-api的这个连接错误?
- javascript - Vue 不会在 main.js 中加载 javascript 文件
- java - 使用 foreach 循环实现对象类型的 ArrayList 的功能
- docker - 您将如何在网页上显示 docker 输出?
- c++ - 在 C++ 中创建双关语结构
- nextcloud - 通过 docker compose 构建 nextCloud 时出现 503 错误
- python - 如何在另一个进程/线程中运行模块并使用它的功能而不阻塞主脚本
- jquery - 如果我使用 jquery-upload-file,如何增加拖放文件的 div 高度
- c++ - VertexBuffer 在尝试对其进行抽象时出错