Javascript Worker可以在Firefox和旧版本的Chrome上工作,但不能在最新的Chrome上工作

Javascript Worker可以在Firefox和旧版本的Chrome上工作,但不能在最新的Chrome上工作,javascript,angularjs,google-chrome,firefox,web-worker,Javascript,Angularjs,Google Chrome,Firefox,Web Worker,我有一个Canvas指令,可以与webWorker进行通信。在Firefox和Chrome=43.0.2357.65(64位)版本上,该指令不接收来自工作者的消息 restrict: 'E' replace: true templateUrl: 'some.html' link: ($scope, element, attrs) -> ... worker = new Worker('js/myworker.js') ... #

我有一个Canvas指令,可以与webWorker进行通信。在Firefox和Chrome<43.0.2357.65(64位)版本上,一切正常,但在Chrome>=43.0.2357.65(64位)版本上,该指令不接收来自工作者的消息

  restrict: 'E'
  replace: true
  templateUrl: 'some.html'
  link: ($scope, element, attrs) ->
    ...
    worker = new Worker('js/myworker.js')
    ...


    #
    # Initialize Worker with the canvas image
    #
    initializeWorker = (imgData, imgWidth, imgHeight, length) ->
      worker.postMessage(
        type: 'init'
        imgData: imgData
        width: imgWidth
        height: imgHeight
        length: length
        calculateBoundingBox: true
      )

    ...
    ...
    initializeWorker(...)

    worker.onmessage = (event) ->
      console.log('Worker message', event)

    worker.onerror = ->
      console.log('error on the web worker')
即使是像这样的假工人:

var onmessage;

onmessage = function(event) {
  return postMessage('message');
};
我尝试使用
Blob
而不是加载'js'工作者文件,但问题仍然存在

在Firefox和Chrome<43.0.2357.65(64位)上,我可以看到如下消息:

Worker message message { target: Worker, isTrusted: true, data: "message", origin: "", lastEventId: "", currentTarget: Worker, eventPhase: 2, bubbles: false, cancelable: true, defaultPrevented: false, timeStamp: 1432625927407334 }
但不是在Chrome上>=43.0.2357.65(64位)。

试试这个

var-onmessage

self.onmessage = function(event) {
  return self.postMessage('message');
};
必须使用“self”