Javascript Worker可以在Firefox和旧版本的Chrome上工作,但不能在最新的Chrome上工作
我有一个Canvas指令,可以与webWorker进行通信。在Firefox和Chrome<43.0.2357.65(64位)版本上,一切正常,但在Chrome>=43.0.2357.65(64位)版本上,该指令不接收来自工作者的消息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') ... #
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”