我写了一个非常基本的网络工作者,但是没有工作。任何帮助,将不胜感激。感谢。
这是我的HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>Basic Demo of Web Workers</title>
</head>
<body>
<button type="button" onclick="start()">Start!</button>
<button type="button" onclick="stop()">Stop!</button>
<output id="counterShow"></output>
</body>
<script>
var myWorker;
function start() {
if(window.Worker) {
myWorker = new Worker("http://yourjavascript.com/8257018521/basic-demo.js");
myWorker.onmessage = function(event) {
document.getElementById('counterShow').innerHTML = event.data;
};
myWorker.onerror = function(event) {
alert(event.message, event);
}
} else {
document.getElementsByTagName('BODY')[0].innerHTML = 'Sorry! Web workers are not supported.';
}
}
function stop() {
myWorker.terminate();
}
</script>
这是托管在CDN(yourjavascript.com)上的JS文件
for(var i=0; i<100000; i++) {
postMessage(i);
}
网络工作者正在默默地失败。请帮忙。
答案 0 :(得分:1)
未捕获的DOMException:无法构造'Worker':无法从原点'null'访问'http://yourjavascript.com/8257018521/basic-demo.js'的脚本
我认为这是出于安全原因。
答案 1 :(得分:0)
100%CORS问题。您无法像<script>
标记中的普通脚本一样加载Web工作者。仅当远程服务器允许外来主机源通过ajax加载其文件时。不知道为什么,但这就是它的方式。请参阅此解决方法:
答案 2 :(得分:-1)
嗯,我自己修好了。我在CodePen上开始了一个新项目,然后在那里运行代码,它的效果非常好。我认为Web Workers运行的关键要求是在线运行,而不是在本地运行。