2015-05-26 1 views
0

У меня есть директива с Canvas, которая общается с webWorker. В Firefox и версиях Chrome < 43.0.2357.65 (64-разрядная версия) все работает хорошо, но в Chrome> = 43.0.2357.65 (64-разрядная) директива не получает сообщения от Рабочего.Работник работает на Firefox и более старую версию Chrome, но не на последнем Chrome

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 < 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-разрядная версия).

ответ

0

Попробуйте это!

var onmessage;

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

должны использовать 'я'

+0

я использовал 'this' и работал. Большое спасибо! –

Смежные вопросы