--- title: MessageEvent slug: Web/API/MessageEvent tags: - API - Channels - Interface - Nachrichten - Referenz - WebSockets - Window - Workers - messaging translation_of: Web/API/MessageEvent ---
Das MessageEvent
Interface representiert eine Nachricht die von einem Zielobjekt empfangen wurde.
Es wird verwendet in in:
onmessage
Eigentschaft des WebSocket Interface).Welche Aktion durch dieses Event ausgeführt wird, entscheidet die Funktion die als entsprechender Eventhandler für das {{event("message")}} Event definiert wurde. Beispielsweise durch das setzen eines onmessage
handlers.
{{AvailableInWorkers}}
MessageEvent
.Dieses Interface erbt auch Eigenschaften seines parents, {{domxref("Event")}}.
MessageEventSource
(welch ein {{domxref("WindowProxy")}}, {{domxref("MessagePort")}}, or {{domxref("ServiceWorker")}} Objekt sein kann) welche den message emitter repräsentiert.Dieses Interface erbt auch Methoden von seinem parent, {{domxref("Event")}}.
In unserem Grundlegenden Shared Worker Beispiel (Shared Worker ausführen), haben wir zwei HTML Seiten, von denen jede eine einfache Berechnung ausführt. Die unterschiedlichen Skripte benutzen die gleiche Worker Datei um die Berechnungen auszuführen — sie können beide darauf zugreifen, selbst wenn sich ihre Seiten in verschiedenen Fenstern befinden.
Der folgende Ausschnitt zeigt wie man ein SharedWorker
Objekt mit dem {{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} constructor erzeugen kann. Beide Skripte enthalten dies:
var myWorker = new SharedWorker('worker.js');
Beide Skripte greifen durch ein {{domxref("MessagePort")}} Objekt auf den Worker zu, welcher mit der {{domxref("SharedWorker.port")}} Eigenschaft erstellt wurde. Wenn das onmessage event mittels addEventListener hinzugefügt wird, wird der port automatisch mittels seiner start()
Methode gestartet:
myWorker.port.start();
Wenn der Port gestartet wurde, senden beide Skripte Nachrichten zu dem Worker und verarbeiten die Nachrichten welche vom Worker empfangen werden mittels port.postMessage()
und port.onmessage
:
first.onchange = function() { myWorker.port.postMessage([first.value,second.value]); console.log('Message posted to worker'); } second.onchange = function() { myWorker.port.postMessage([first.value,second.value]); console.log('Message posted to worker'); } myWorker.port.onmessage = function(e) { result1.textContent = e.data; console.log('Message received from worker'); }
In dem Worker benutzen wir den {{domxref("SharedWorkerGlobalScope.onconnect")}} Handler um uns mit dem oben erwähnten Port zu verbinden. Die mit dem Worker verbundenen Ports sind durch die ports
Eigenschaft des {{event("connect")}} Events erreichbar — dann benutzen wir die {{domxref("MessagePort")}} start()
Methode um den Port zu starten, und den onmessage
Handler um die Nachrichten die von den Hauptthreads gesendet wurden zu verarbeiten.
onconnect = function(e) { var port = e.ports[0]; port.addEventListener('message', function(e) { var workerResult = 'Result: ' + (e.data[0] * e.data[1]); port.postMessage(workerResult); }); port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter. }
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "#messageevent", "MessageEvent")}} | {{Spec2('HTML WHATWG')}} |
{{CompatibilityTable}}
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Grundlegende Unterstützung | 1 | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("2.0")}} | 9 | {{CompatUnknown}} | {{CompatSafari('10.0+')}} |
origin als {{domxref("USVString")}} und source als MessageEventSource |
{{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatGeckoDesktop("55.0")}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Grundlegende Unterstützung | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | 3.0+ |
origin als {{domxref("USVString")}} und source als MessageEventSource |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile("55.0")}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatUnknown}} |