Erkennen, ob postMessage senden können Objekte?

Ich bin auf der Suche nach eine nette Möglichkeit um zu erkennen, ob postMessage in der browser unterstützt das senden und empfangen von Objekten oder einfach nur strings. Ich vermute, dass jemand da draußen muss etwas schrieb, das dies tut, aber ich habe es nicht geschafft, eine Lösung zu finden.

Bin ich mit postMessage senden von Daten zu/von einem WebWorker. Während Sie erkennen, ob der browser unterstützt die Beschäftigten ist straight-forward, erkennen, ob Objekte können per postMessage hat sich als schwierig erwiesen.

Ich würde gerne schreiben ein einfaches detection-Funktion. Also, wenn der browser unterstützt das versenden von Objekten zu verwenden. Wenn nur strings erlaubt sind kann ich den fallback auf die Verwendung von JSON.stringify(). Ich werde wahrscheinlich weisen Sie die Funktion zu einem dojo/test (das ist zwar nicht relevant für die Frage/Antwort).

Was haben andere Menschen getan, um dieses problem zu lösen? Jede Beratung wäre toll, ich bin neu sowohl für Webworker und postMessage. Vielen Dank im Voraus.

Dumme Frage von mir - kannst du postMessage das gleiche Fenster?
was? Ein WebWorker ist eine Klasse zum erstellen (pseudo-)threads. Grundsätzlich können Sie die Ausführung einer externen javascript-Datei, während das javascript in die Seite weiterhin läuft einwandfrei. postMessage ermöglicht Ihnen die Kommunikation mit diesem thread. Es nicht zu tun hat, mit verschiedenen windows überhaupt.
Dein Erster Satz spricht über das senden von Nachrichten mit postMessage. Ich schaue postMessage und er spricht über das senden von Nachrichten an andere windows (soweit ich mich erinnere). Abgesehen von der Tatsache, dass Sie sprechen, Web-worker, warum würden Sie nicht einfach einen test nennen? Ich vermute, Ihre Kommunikation ist anders, aber wenn Sie ein Zuhörer im aktuellen Fenster für onmessage und pass in {}...einfach mal die typeof zu sehen, ob es ein Objekt und kein string.

InformationsquelleAutor Stephen Simpson | 2012-12-07

Schreibe einen Kommentar