我正在尝试从我的扩展程序的内容脚本创建一个Web Worker,但它被SecurityError(相同的源策略)阻止。最好的方法是什么?
从我的内容脚本:
var workerURL = chrome.extension.getURL("js/searchWorker.js");
var lunrWorker = new Worker(workerURL);
从清单:
"content_scripts": [
{
"matches": ["http://localhost:8000/*"],
"js": ["js/jquery.min.js", "js/jquery.highlight.js", "js/index.js"],
"css": ["css/bootstrap.css", "css/styles.css"]
}
]
我也尝试在我的清单中设置它,但它没有帮助:
"content_security_policy": "default-src 'none'; style-src 'self'; script-src 'self';",
(旁注:CSS没有被注入页面,我不确定这是同一问题的症状还是无关的)
http://crbug.com/357664 是关于无法将扩展脚本作为Web工作者加载的错误报告。
此问题的解决方法是使用XMLHttpRequest加载工作程序脚本,然后 从字符串加载worker。当我在过去遇到这个问题时,我创建了一个透明地修改它的包装器 Worker
构造函数,所以你可以使用 new Worker(chrome.runtime.getURL('worker.js'))
没有任何问题。
看到 patch-worker.js
(文件)用于执行先前的想法。
patch-worker.js
有一些限制(例如 importScripts
不能按预期工作),主要与它不运行的事实有关 chrome-extension:
-起源。为了解决这些问题,我创建了另一个使用iframe创建Worker的库。看到 worker_proxy
用于源代码和文档。
http://crbug.com/357664 是关于无法将扩展脚本作为Web工作者加载的错误报告。
此问题的解决方法是使用XMLHttpRequest加载工作程序脚本,然后 从字符串加载worker。当我在过去遇到这个问题时,我创建了一个透明地修改它的包装器 Worker
构造函数,所以你可以使用 new Worker(chrome.runtime.getURL('worker.js'))
没有任何问题。
看到 patch-worker.js
(文件)用于执行先前的想法。
patch-worker.js
有一些限制(例如 importScripts
不能按预期工作),主要与它不运行的事实有关 chrome-extension:
-起源。为了解决这些问题,我创建了另一个使用iframe创建Worker的库。看到 worker_proxy
用于源代码和文档。