javascript – 从Chrome扩展内容脚本创建Web Worker

前端之家收集整理的这篇文章主要介绍了javascript – 从Chrome扩展内容脚本创建Web Worker前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从我的扩展的内容脚本创建一个Web工作,但它被一个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';",

(Sidenote:CSS没有注入页面,我不知道这是否是同一个问题或不相关的症状)

解决方法

http://crbug.com/357664是关于无法将扩展脚本作为Web工作者加载的错误报告.

这个问题的解决方法是使用XMLHttpRequest加载工作脚本,然后是load the worker from a string.当我以前遇到这个问题时,我创建了一个透明地修改Worker构造函数的包装器,所以你可以使用new Worker(chrome.runtime.getURL ‘worker.js’))没有任何问题.

请参阅patch-worker.js(documentation)以执行上一个想法.

patch-worker.js有一些限制(例如,importScripts不能按预期的方式),主要与它不在chrome扩展中运行的事实有关:-origin.为了解决这些问题,我创建了另一个使用iframe创建Worker的库.请参阅worker_proxy的源代码和文档.

猜你在找的JavaScript相关文章