Signatur
Beschreibung
Der Konstruktor PresentationConnectionAvailableEvent() erstellt ein Ereignisobjekt der Presentation API. Solche Ereignisse löst der Browser aus, sobald eine neue PresentationConnection zur Verfügung steht. Das passiert zum Beispiel am PresentationRequest als connectionavailable-Ereignis, wenn eine Präsentation über die Standardpräsentation (navigator.presentation.defaultRequest) gestartet wurde.
Im Normalfall erzeugt der Browser diese Ereignisse selbst. Den Konstruktor ruft man manuell vor allem in Tests, Mocks oder bei synthetischen Ereignissen auf, etwa um die eigene Verbindungslogik ohne echtes Zweitdisplay zu prüfen.
Wichtig: Das Options-Objekt muss die Eigenschaft connection enthalten. Sie muss auf ein echtes PresentationConnection-Objekt verweisen. Andernfalls wirft der Konstruktor einen TypeError. Da sich PresentationConnection nicht direkt instanziieren lässt, braucht man für ein synthetisches Ereignis in der Praxis eine bereits bestehende Verbindung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type Pflicht | string | Name des Ereignisses, üblicherweise "connectionavailable". Groß- und Kleinschreibung wird beachtet. |
|
| $options Pflicht | PresentationConnectionAvailableEventInit | Objekt mit der Pflichteigenschaft connection (eine PresentationConnection). Außerdem sind die von EventInit geerbten Felder bubbles, cancelable und composed erlaubt (jeweils Standard false). |
Rückgabewert
connection auf die übergebene PresentationConnection verweist.Beispiele
Auf echte connectionavailable-Ereignisse reagieren
// Controller-Seite: Standardpräsentation festlegen
const request = new PresentationRequest(['receiver.html']);
navigator.presentation.defaultRequest = request;
request.addEventListener('connectionavailable', (event) => {
// event ist ein PresentationConnectionAvailableEvent
const { connection } = event;
console.log('Verbindung verfügbar:', connection.id, connection.state);
connection.addEventListener('message', (e) => console.log('Empfangen:', e.data));
});
Synthetisches Ereignis mit bestehender Verbindung erzeugen
const request = new PresentationRequest(['receiver.html']);
const handleConnection = (event) => {
console.log('Handler aufgerufen, Status:', event.connection.state);
};
request.addEventListener('connectionavailable', handleConnection);
// Muss durch eine Benutzeraktion ausgelöst werden
document.querySelector('#start').addEventListener('click', async () => {
const connection = await request.start();
// Dieselbe Verbindung erneut an die Anwendungslogik melden (z. B. im Test)
const evt = new PresentationConnectionAvailableEvent('connectionavailable', {
connection,
});
request.dispatchEvent(evt);
console.log(evt instanceof Event, evt.connection === connection);
});
Fehlende connection-Option führt zu TypeError
try {
new PresentationConnectionAvailableEvent('connectionavailable', {});
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- Experimentell und eingeschränkt verfügbar: Die Presentation API gibt es praktisch nur in Chromium-Browsern (Chrome, Edge). Firefox und Safari unterstützen sie nicht. Vor der Nutzung sollte man die Verfügbarkeit prüfen, z. B. mit
'PresentationConnectionAvailableEvent' in window. - Die API steht nur in einem sicheren Kontext (HTTPS) zur Verfügung.
options.connectionist Pflicht. Fehlt die Eigenschaft oder ist sie keinPresentationConnection-Objekt, wirft der Konstruktor einenTypeError.- Selbst erzeugte Ereignisse haben
isTrusted === false. Sie bauen keine echte Verbindung auf, sondern benachrichtigen nur die registrierten Listener. PresentationRequest.start()funktioniert nur nach einer Benutzeraktion (transient activation).