为什么Chrome不允许Web Workers在JavaScript中运行?
如果我试图通过一个JavaScript文件中使用网络工作者,铬抛出一个错误 -为什么Chrome不允许Web Workers在JavaScript中运行?
Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'.
但它可以让他们,如果我们直接通过HTML中使用。
Chrome can't load web worker的答案表示Chrome在从本地文件运行脚本时不允许加载web worker。
为什么chrome不允许web worker在本地运行?
Web Workers在Firefox,Safari和Edge中工作得很好
此问题已被提问。工作人员应该工作在从磁盘打开的HTML文件中,只要您使用相对路径即可。但是,如果chrome正确地实现了这一点,就一直存在争议。
我建议你尝试在你的脚本中使用相对路径:
new Worker("./scripts/worker.js");
如果还是不行,请参见以下解决方法:https://stackoverflow.com/a/33432215/607407
具体来说,负载工人作为一个功能,然后将其转换函数字符串:
function worker_function() {
// all worker code here
}
var worker = new Worker(URL.createObjectURL(new Blob(["("+worker_function.toString()+")()"], {type: 'text/javascript'})));
您提到的答案是“Chrome从本地文件运行脚本时不允许您加载web worker”。 这是我真正的问题。为什么我们不能在Chrome本地使用工作人员? –
如果worker js文件在同一个目录中,我只需要将它称为正确的? '新工人(“worker.js”);' – utdev
@InderpartapCheema如果您问*为什么*,那么它的主题,请参阅帮助中心。 –
网络工作者自4.00版本以来一直支持chrome,也许分享你的代码?我怀疑它可以访问'worker.js'这就是问题所在。 – Jim
您的应用程序是否从文件系统(file://)运行http(http://,https://)或streight? –
此问题与[Chrome无法加载网络工作者](http://stackoverflow.com/q/21408510/607407)完全相同。在提出问题之前,请确实考虑使用Google搜索错误消息,这会更快。 –