Worker 在 Firefox 和 Chrome 的旧版本上工作,但不在最新的 Chrome 上工作
Worker works on Firefox, and older version of Chrome but not on the latest Chrome
我有一个指令 Canvas 与 webWorker 通信。在 Firefox 和 Chrome < 43.0.2357.65(64 位)版本上,一切正常,但在 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')
即使是像这样的虚拟 Worker:
var onmessage;
onmessage = function(event) {
return postMessage('message');
};
我尝试使用 Blob
而不是加载 `js' Worker 文件,但问题仍然存在。
在 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'
我有一个指令 Canvas 与 webWorker 通信。在 Firefox 和 Chrome < 43.0.2357.65(64 位)版本上,一切正常,但在 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')
即使是像这样的虚拟 Worker:
var onmessage;
onmessage = function(event) {
return postMessage('message');
};
我尝试使用 Blob
而不是加载 `js' Worker 文件,但问题仍然存在。
在 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'