Web Worker无法正常工作

时间:2017-08-17 20:10:18

标签: javascript html5 web-worker

我写了一个非常基本的网络工作者,但是没有工作。任何帮助,将不胜感激。感谢。

这是我的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);
}

网络工作者正在默默地失败。请帮忙。

3 个答案:

答案 0 :(得分:1)

未捕获的DOMException:无法构造'Worker':无法从原点'null'访问'http://yourjavascript.com/8257018521/basic-demo.js'的脚本

我认为这是出于安全原因。

更多信息:Cross Domain Web Workers

答案 1 :(得分:0)

100%CORS问题。您无法像<script>标记中的普通脚本一样加载Web工作者。仅当远程服务器允许外来主机源通过ajax加载其文件时。不知道为什么,但这就是它的方式。请参阅此解决方法:

https://stackoverflow.com/a/33432215/607407

答案 2 :(得分:-1)

嗯,我自己修好了。我在CodePen上开始了一个新项目,然后在那里运行代码,它的效果非常好。我认为Web Workers运行的关键要求是在线运行,而不是在本地运行。