Chrome 无法加载网络工作人员

2022-08-30 04:12:58

我正在处理一个使用Web工作者的项目。

在我的头部部分,我有这个代码:

var worker = new Worker("worker.js");
// More code

这在 Safari 中工作正常,但 Chrome 会报告以下错误:

Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'.

为什么这在Safari中可以完美地工作,而不是Chrome?如何解决此问题?

谢谢。


答案 1

Chrome 不允许您在从本地文件运行脚本时加载网络辅助角色。


答案 2

我使用了一种解决方法。铬块,但不是.因此,制定通用解决方案的最佳方法是:Worker<script>

function worker_function() {
    // all code here
}
// This is in case of normal worker start
// "window" is not defined in web worker
// so if you load this file directly using `new Worker`
// the worker code will still execute properly
if(window!=self)
  worker_function();

然后,您可以像往常一样链接它。一旦定义了函数,你就使用这个可憎的代码:<script src="..."

new Worker(URL.createObjectURL(new Blob(["("+worker_function.toString()+")()"], {type: 'text/javascript'})));