Start · Sprachen · JavaScript · Referenz · Presentation.defaultRequest

Presentation.defaultRequest

Eigenschaft

Liest oder setzt die Standard-<code>PresentationRequest</code>, die der Browser nutzt, wenn der Nutzer eine Präsentation über die Browser-Oberfläche (z. B. „Streamen…“) startet; sonst <code>null</code>.

seit JavaScript Experimentell: Chromium-basierte Browser (Chrome/E Kategorie: webapi

Signatur

Presentation.defaultRequest

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

Typ
PresentationRequest | null
Beschreibung
Die aktuell gesetzte Standard-Präsentationsanfrage oder 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.');
}
Verbunden mit Präsentation: 3f2a… (sobald der Nutzer über das Browser-Menü streamt)

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);
}
Keine Standard-Präsentationsanfrage gesetzt.

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();
Standard-Anfrage entfernt: null

// 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 navigator prüfen.
  • Ob der Browser defaultRequest in 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, der request.start() aufruft.
  • Nur verfügbar in sicheren Kontexten (HTTPS) und im steuernden Benutzeragenten. Auf der Empfängerseite navigator.presentation.receiver verwenden.
  • Die Empfänger-URLs der PresentationRequest müssen vom Browser bzw. vom Zielgerät unterstützt werden, sonst gibt es keine verfügbaren Bildschirme. Mit request.getAvailability() lässt sich das prüfen.
  • Die Präsentationsanfrage selbst ist nicht sicherheitskritisch. Nachrichten, die über PresentationConnection ankommen, sollten aber immer geprüft werden, bevor man sie z. B. per innerHTML ausgibt (XSS-Gefahr).