Javascript <;拒绝许可>;尝试实例化web工作对象时出错

Javascript <;拒绝许可>;尝试实例化web工作对象时出错,javascript,html,web-worker,Javascript,Html,Web Worker,首次尝试web worker API,但似乎无法从后台工作人员那里得到响应 标记: <script src="~/Scripts/script.js"></script> <button onclick="TriggerWorker()">Trigger Worker</button> worker.js文件的内容: onmessage = function (e) { postMessage('OK'); } 我可以让myWorker

首次尝试web worker API,但似乎无法从后台工作人员那里得到响应

标记:

<script src="~/Scripts/script.js"></script>
<button onclick="TriggerWorker()">Trigger Worker</button>
worker.js文件的内容:

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

我可以让myWorker对象写入控制台,但响应“OK”永远不会返回控制台。在检查myWorker对象时,我可以看到onmessage属性设置为“Permission denied”。

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

我通过进行以下编辑使其正常工作:

var myWorker = new Worker('../Scripts/worker.js');
  • onmessage事件属于当前窗口。所以在script.js中应该是

    self.onmessage=函数(e)

  • 而不是

    myWorker.onmessage = function (e)
    
    onmessage = function (e) {
       postMessage('OK'); }
    
  • postMessage方法属于目标窗口。所以在worker.js中应该是

    onmessage=函数(e){ e、 source.postMessage('OK');}

  • 而不是

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

    您的工人类在哪里?在发送消息时工人是否已加载?在加载时记录一些内容,看看是否有效…@noob worker.js文件中没有其他声明。是否应该在名为Worker()的函数中?@dandav在我尝试此操作时,控制台中没有任何内容,但据我所知,该Worker加载了不同的作用域,因此不确定它是否确实可以访问控制台。也许我没有真正进入worker.js文件…我的意思是立即发送来自worker的消息,onload,甚至只是在底部。发送无处可去的消息不会像错误一样留下任何明显的痕迹。我怀疑触发OK消息的消息在worker的onmessage处理程序绑定之前到达。。。