Signatur
Beschreibung
Die Eigenschaft defaultRequest des Presentation-Objekts (erreichbar über navigator.presentation) gehört zur Presentation API. In einem steuernden Benutzeragenten (der Seite, die eine Präsentation auf einem zweiten Bildschirm startet) gibt sie die Standard-Präsentationsanfrage zurück, falls eine gesetzt wurde. Andernfalls ist der Wert null.
Wozu dient das? Viele Browser bieten in ihrem Menü eine eigene Funktion an, um Inhalte auf einen externen Bildschirm, einen Chromecast oder einen Beamer zu übertragen. Weist eine Seite navigator.presentation.defaultRequest eine PresentationRequest zu, kann der Browser diese Anfrage verwenden, wenn der Nutzer die Übertragung über die Browser-Oberfläche startet, also ohne einen Button der Seite. Die Seite legt damit fest, welche Empfänger-URL auf dem zweiten Bildschirm geladen wird.
Wenn der Nutzer über diesen Weg eine Verbindung aufbaut, wird an der Anfrage das Ereignis connectionavailable ausgelöst. Dort bekommt die Seite die PresentationConnection und kann anschließend Nachrichten mit der Empfängerseite austauschen. Auf der Empfängerseite (dem präsentierenden Benutzeragenten) hat defaultRequest keine Bedeutung, dort wird stattdessen navigator.presentation.receiver verwendet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | PresentationRequest | null | null | Beim Setzen: die PresentationRequest, die als Standard-Anfrage dienen soll. Mit null wird die Standard-Anfrage wieder entfernt. |
Rückgabewert
null, wenn keine gesetzt ist bzw. wenn man sich im präsentierenden Benutzeragenten befindet.Beispiele
Standard-Anfrage setzen und auf Verbindung reagieren
if ('presentation' in navigator && 'PresentationRequest' in window) {
const request = new PresentationRequest(['https://example.com/receiver.html']);
// Der Browser verwendet diese Anfrage beim Start über sein Menü
navigator.presentation.defaultRequest = request;
request.addEventListener('connectionavailable', (event) => {
const connection = event.connection;
console.log('Verbunden mit Präsentation:', connection.id);
connection.addEventListener('connect', () => {
connection.send(JSON.stringify({ folie: 1 }));
});
});
} else {
console.warn('Presentation API wird nicht unterstützt.');
}
Aktuelle Standard-Anfrage prüfen
const aktuelle = navigator.presentation?.defaultRequest ?? null;
if (aktuelle === null) {
console.log('Keine Standard-Präsentationsanfrage gesetzt.');
} else {
console.log('Standard-Anfrage vorhanden:', aktuelle instanceof PresentationRequest);
}
Standard-Anfrage beim Verlassen einer Ansicht entfernen
const request = new PresentationRequest('/slides/receiver.html');
navigator.presentation.defaultRequest = request;
// z. B. in einer Single-Page-App beim Wechsel der Ansicht
const ansichtVerlassen = () => {
navigator.presentation.defaultRequest = null;
console.log('Standard-Anfrage entfernt:', navigator.presentation.defaultRequest);
};
ansichtVerlassen();
// Wichtig · Fallstricke
- Experimentell und kaum unterstützt: Die Presentation API gibt es im Wesentlichen nur in Chromium-basierten Browsern, dort auch nur teilweise. In Firefox und Safari fehlt
navigator.presentation. Deshalb vorher immer mit'presentation' in navigatorprüfen. - Ob der Browser
defaultRequestin seiner Oberfläche tatsächlich verwendet, hängt von der Implementierung ab. Einige Chrome-Versionen haben die Unterstützung für die Standard-Anfrage eingeschränkt oder entfernt. Deshalb zusätzlich einen eigenen Button anbieten, derrequest.start()aufruft. - Nur verfügbar in sicheren Kontexten (HTTPS) und im steuernden Benutzeragenten. Auf der Empfängerseite
navigator.presentation.receiververwenden. - Die Empfänger-URLs der
PresentationRequestmüssen vom Browser bzw. vom Zielgerät unterstützt werden, sonst gibt es keine verfügbaren Bildschirme. Mitrequest.getAvailability()lässt sich das prüfen. - Die Präsentationsanfrage selbst ist nicht sicherheitskritisch. Nachrichten, die über
PresentationConnectionankommen, sollten aber immer geprüft werden, bevor man sie z. B. perinnerHTMLausgibt (XSS-Gefahr).