Ich bin auf der Suche nach einem sauberen Weg zu erkennen, ob PostMessage im Browser das Senden und Empfangen von Objekten oder nur Strings unterstützt. Ich denke, dass jemand da draußen etwas geschrieben haben muss, das das tut, aber ich habe es nicht geschafft, eine Lösung zu finden.Ermitteln, ob PostMessage Objekte senden kann?
Ich benutze postMessage, um Daten an/von einem WebWorker zu senden. Während der Erkennung, ob der Browser Arbeiter unterstützt, ist es einfach, festzustellen, ob Objekte per PostMessage gesendet werden können.
Ich möchte eine einfache Erkennungsfunktion schreiben. Also, wenn der Browser das Senden von Objekten unterstützt, um das zu verwenden. Wenn nur Strings erlaubt sind, kann ich auf die Verwendung von JSON.stringify() zurückgreifen. Ich werde die Funktion wahrscheinlich einem dojo/has-Test zuweisen (obwohl das für die Frage/Antwort nicht relevant ist).
Was haben andere Leute getan, um dieses Problem zu lösen? Jeder Rat wäre toll, ich bin neu in WebWorkers und PostMessage. Danke im Voraus.
Stumme Frage von mir - können Sie 'postMessage' in das gleiche Fenster? – Ian
@Ian ... was? Ein WebWorker ist eine Klasse zum Erstellen von (Pseudo-) Threads. Sie können grundsätzlich eine externe Javascript-Datei ausführen, während das Javascript auf dieser Seite weiterhin fehlerfrei läuft. Mit 'postMessage' können Sie mit diesem Thread kommunizieren. Es hat überhaupt nichts mit verschiedenen Fenstern zu tun. –
Ihr erster Satz spricht über das Senden von Nachrichten mit 'postMessage'. Ich schaue 'postMessage' nach und es geht darum, Nachrichten an andere Fenster zu senden (so wie ich mich erinnere). Wenn Sie die Tatsache ignorieren, dass Sie mit Web Workers sprechen, warum würden Sie dann nicht einfach einen Testanruf starten? Ich nehme an, dass ihre Kommunikation anders ist, aber wenn Sie einen Listener im aktuellen Fenster für "onmessage" einrichten und '{}' übergeben, überprüfen Sie einfach den 'typeof', um zu sehen, ob es ein Objekt und keine Zeichenfolge ist . – Ian