【问题标题】:Worker works on Firefox, and older version of Chrome but not on the latest ChromeWorker 适用于 Firefox 和旧版 Chrome,但不适用于最新版 Chrome
【发布时间】:2015-05-26 07:44:57
【问题描述】:

我有一个带有 Canvas 的指令,它与 webWorker 进行通信。在 Firefox 和 Chrome = 43.0.2357.65(64 位)上,该指令未接收来自 Worker 的消息。

  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´ Worker 文件,但问题仍然存在。

在 Firefox 和 Chrome

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 位)上。

【问题讨论】:

    标签: javascript angularjs google-chrome firefox web-worker


    【解决方案1】:

    试试这个!!

    var onmessage;

    self.onmessage = function(event) {
      return self.postMessage('message');
    };
    

    必须使用“自我”

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 1970-01-01
      • 2018-09-08
      • 2014-11-17
      • 2015-06-09
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多