<permission denied =“”>尝试实例化Web worker对象</permission>时出错

时间:2015-02-22 03:34:09

标签: javascript html html5 web-worker

第一次尝试使用Web worker API,似乎无法获得后台工作者的响应。

标记:

<script src="~/Scripts/script.js"></script>
<button onclick="TriggerWorker()">Trigger Worker</button>

script.js文件的内容:

function TriggerWorker() {

    var myWorker = new Worker('worker.js');

    myWorker.onmessage = function (e) {
        console.log(e.data);
    }

    console.log(myWorker);

    myWorker.postMessage("Text sent to worker");
}

worker.js文件的内容:

onmessage = function (e) {
    postMessage('OK');
}

我可以让myWorker对象写入控制台,但响应&#34; OK&#34;永远不会让它回到控制台。检查myWorker对象时,我可以看到onmessage属性设置为&#34;权限被拒绝&#34;。

2 个答案:

答案 0 :(得分:0)

包含worker onmessage声明的文件的路径是相对于html文件的 - 而不是调用脚本文件。

我通过进行以下编辑来实现它:

var myWorker = new Worker('../Scripts/worker.js');

答案 1 :(得分:0)

  1. onmessage事件与当前窗口有关。所以在script.js中它应该是

    self.onmessage = function(e)

  2. 而不是

    myWorker.onmessage = function (e)
    
    1. postMessage方法属于目标窗口。所以在worker.js中它应该是

      onmessage = function(e){      e.source.postMessage( 'OK'); }

    2. 而不是

      onmessage = function (e) {
         postMessage('OK'); }