HTML5 Web Workers arbeiten in Firefox 4, aber nicht in Chrome 12.0.742.122

9

Als ich versucht habe, mit der Web Workers-Funktion in HTML5 herumzuspielen, funktioniert mein Firefox glücklich, aber chrome beschwert sich:

  

Uncaught TypeError: Die Methode 'postMessage' von undefined kann nicht aufgerufen werden   xstartWorkerworker.html: 7 (anonyme Funktion) worker.html: 1   onclickworker.html: 2

worker.html

%Vor%

worker.js

%Vor%

Was kann ich tun, damit es in Chrome funktioniert?

Übrigens, als ich das Sample in Ссылка ausprobiert habe und dieses mal funktioniert chrome, aber firefox beklagt das

  

Fehler: Arbeitskraft ist nicht definiert Quelldatei:    Ссылка Zeile: 39

    
janetsmith 25.07.2011, 02:55
quelle

2 Antworten

7

Ich schätze, Sie versuchen, dies auf Ihrem lokalen Rechner auszuführen, nicht auf einem Webserver. Arbeiter sind durch die Richtlinie für gleiche Herkunft eingeschränkt, aber wie auf der verlinkten Wikipedia-Seite angegeben,

  

Das Verhalten von Prüfungen gleicher Herkunft und ähnlicher Mechanismen ist nicht relevant   in einer Reihe von Ecken Fällen klar definiert, wie für Protokolle, die   Sie haben keinen eindeutig definierten Hostnamen oder Port, mit dem sie verbunden sind   URLs (Datei :, Daten: usw.).

Das Laden einer lokalen Datei, auch mit einer relativen URL, entspricht dem Laden einer Datei mit dem file: -Protokoll. Ich vermute also, dass Sie versuchen, worker.js als lokale Datei zu laden - Chrome mag das nicht (aus guten Sicherheitsgründen), obwohl Sie das Problem erzwingen können, indem Sie Chrome wie folgt starten: chrome.exe --allow-file-access-from-files

Alternativ versuchen Sie, Ihr Skript auf einem lokalen oder Remote-Webserver zu senden und zu sehen, ob das das Problem behebt. (Wenn Sie Python installiert haben, können Sie zu dem betreffenden Verzeichnis gehen und python -m SimpleHTTPServer 8000 ausführen, dann gehen Sie zu Ссылка in Ihrem Browser).

    
nrabinowitz 25.07.2011, 23:32
quelle
5

Chrome kann den Worker lokal ohne --allow-file-access-from-files verwenden. Der Arbeiter muss als Blob geladen werden.

Beispiel:

%Vor%

Die Datei worker_lib2.js:

%Vor%     
jlguenego 28.08.2013 14:16
quelle