Start · Sprachen · JavaScript · Referenz · PresentationConnection.url

PresentationConnection.url

Eigenschaft

Schreibgeschützte Eigenschaft, die die URL als String zurückgibt, mit der die Präsentation erstellt oder wiederverbunden wurde.

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

Signatur

PresentationConnection.url

Beschreibung

Die Eigenschaft url einer PresentationConnection enthält die absolute URL der Präsentationsseite, mit der die Verbindung aufgebaut wurde. Die URL wurde vorher im Konstruktor new PresentationRequest(urls) angegeben. Hat man dort mehrere URLs übergeben, wählt der Browser bzw. das Empfangsgerät eine davon aus. Genau diese ausgewählte URL steht danach in url.

Nützlich ist die Eigenschaft vor allem in drei Fällen:

  • Man will herausfinden, welche der angebotenen URLs tatsächlich genutzt wird, etwa eine Variante für einen bestimmten Bildschirmtyp.
  • Man will url zusammen mit id speichern, zum Beispiel in localStorage, um sich später mit PresentationRequest.prototype.reconnect(id) wieder mit derselben Präsentation zu verbinden.
  • Man protokolliert Verbindungen oder sucht Fehler.

Die Eigenschaft ist schreibgeschützt. Wer ihr etwas zuweist, bewirkt nichts, und im Strict Mode wird ein TypeError ausgelöst. Auf der Empfängerseite erhält man Verbindungen über navigator.presentation.receiver.connectionList. Auch dort hat jede Verbindung eine url-Eigenschaft.

Rückgabewert

Typ
string
Beschreibung
Die absolute URL (USVString) der Präsentationsseite, mit der die Verbindung hergestellt oder wiederhergestellt wurde. Relative Angaben aus dem PresentationRequest werden gegen die Basis-URL des Dokuments aufgelöst.

Beispiele

Ausgewählte Präsentations-URL nach dem Start auslesen

// Zwei Varianten anbieten – der Browser wählt eine passende aus
const request = new PresentationRequest([
  'praesentation/hd.html',
  'praesentation/basic.html'
]);

const startButton = document.querySelector('#start');
startButton.addEventListener('click', async () => {
  try {
    const connection = await request.start();
    console.log('Verbunden mit:', connection.url);
    console.log('Verbindungs-ID:', connection.id);
  } catch (err) {
    console.error('Präsentation nicht gestartet:', err.name);
  }
});
Verbunden mit: https://example.com/praesentation/hd.html Verbindungs-ID: 3f2a9c1e-...

URL und ID speichern und später wiederverbinden

const request = new PresentationRequest(['slides.html']);

const merken = (connection) => {
  localStorage.setItem('praesentation', JSON.stringify({
    id: connection.id,
    url: connection.url
  }));
};

const wiederverbinden = async () => {
  const gespeichert = JSON.parse(localStorage.getItem('praesentation') ?? 'null');
  if (!gespeichert) return null;

  // Nur wiederverbinden, wenn die URL zur aktuellen Anfrage passt
  const erwartet = new URL('slides.html', location.href).href;
  if (gespeichert.url !== erwartet) return null;

  const connection = await request.reconnect(gespeichert.id);
  console.log('Wiederverbunden mit', connection.url);
  return connection;
};

request.start().then(merken);
Wiederverbunden mit https://example.com/slides.html

Empfängerseite: eingehende Verbindungen protokollieren

// Läuft in der Präsentationsseite auf dem Zweitbildschirm
if (navigator.presentation?.receiver) {
  const list = await navigator.presentation.receiver.connectionList;

  const logge = (connection) => {
    console.log(`Verbindung ${connection.id} für ${connection.url} (${connection.state})`);
  };

  list.connections.forEach(logge);
  list.addEventListener('connectionavailable', (event) => logge(event.connection));
}
Verbindung 3f2a9c1e-... für https://example.com/slides.html (connected)

// Wichtig · Fallstricke

  • Kompatibilität: Die Presentation API ist experimentell. Nur Chromium-basierte Browser unterstützen sie, und auch dort ist sie teilweise an Cast-Geräte gebunden. Firefox und Safari unterstützen sie nicht. Prüfe deshalb vorher mit 'PresentationRequest' in window, ob die Schnittstelle vorhanden ist.
  • Sicherer Kontext: Die API ist nur über HTTPS verfügbar.
  • Der Wert ist immer eine aufgelöste, absolute URL. Wer ihn direkt mit einer relativen Angaben-URL vergleicht, erhält false. Normalisiere die Angabe deshalb vorher mit new URL(pfad, location.href).href.
  • Bei mehreren angebotenen URLs darf man nicht annehmen, dass die erste gewählt wird. Nur url zeigt verlässlich, welche Variante tatsächlich läuft.
  • Die Eigenschaft ist schreibgeschützt. Um eine andere Seite zu präsentieren, braucht man einen neuen PresentationRequest.