Start · Sprachen · JavaScript · Referenz · ScreenDetailed.label

ScreenDetailed.label

Eigenschaft

Schreibgeschützter String mit einer für Menschen lesbaren Bezeichnung des Bildschirms, z. B. <code>"Built-in Retina Display"</code>.

seit JavaScript Chromium 100+ (Window Management API, experimentel Kategorie: webapi

Signatur

ScreenDetailed.label

Beschreibung

Die Eigenschaft label des ScreenDetailed-Interfaces liefert eine beschreibende Bezeichnung des jeweiligen Bildschirms, etwa "Built-in Retina Display" oder den Modellnamen eines externen Monitors. Sie gehört zur Window Management API (früher „Multi-Screen Window Placement API“). Ein ScreenDetailed-Objekt bekommt man über das Promise von window.getScreenDetails(), und zwar über die Eigenschaften screens oder currentScreen.

Gedacht ist label vor allem für die Benutzeroberfläche. Zeigt eine Anwendung auf mehreren Monitoren etwa Präsentationen, Handelsplattformen oder Bildbearbeitung an, kann sie den Nutzer den Zielbildschirm über eine Auswahlliste mit verständlichen Namen wählen lassen. Das ist deutlich angenehmer als nur Koordinaten oder Indizes.

Der Wert kommt vom Betriebssystem bzw. Browser und ist nicht standardisiert. Er kann leer sein, sich zwischen Plattformen unterscheiden und muss nicht eindeutig sein: Zwei baugleiche Monitore haben unter Umständen dieselbe Bezeichnung. Als stabile Kennung eignet sich label daher nicht.

Rückgabewert

Typ
string
Beschreibung
Eine beschreibende Bezeichnung des Bildschirms, z. B. "Built-in Retina Display" oder "DELL U2720Q". Kann ein leerer String sein, wenn keine Bezeichnung verfügbar ist oder der Browser sie aus Datenschutzgründen zurückhält.

Beispiele

Bezeichnungen aller angeschlossenen Bildschirme ausgeben

const listScreens = async () => {
  if (!('getScreenDetails' in window)) {
    console.warn('Window Management API wird nicht unterstützt.');
    return;
  }
  // Löst ggf. eine Berechtigungsabfrage aus
  const details = await window.getScreenDetails();
  details.screens.forEach((screen, i) => {
    console.log(`${i}: ${screen.label || '(ohne Bezeichnung)'} – ${screen.width}×${screen.height}`);
  });
};

listScreens();
0: Built-in Retina Display – 1512×982 1: DELL U2720Q – 2560×1440

Bildschirm-Auswahl für ein Präsentationsfenster

const buildScreenPicker = async (selectEl) => {
  const details = await window.getScreenDetails();
  selectEl.replaceChildren();
  details.screens.forEach((screen, i) => {
    const option = document.createElement('option');
    option.value = String(i);
    // textContent statt innerHTML – label stammt nicht aus eigenem Code
    option.textContent = `${screen.label || `Bildschirm ${i + 1}`}${screen.isPrimary ? ' (primär)' : ''}`;
    selectEl.append(option);
  });

  selectEl.addEventListener('change', () => {
    const target = details.screens[Number(selectEl.value)];
    window.open('/praesentation.html', '_blank',
      `left=${target.availLeft},top=${target.availTop},width=${target.availWidth},height=${target.availHeight}`);
  });
};

buildScreenPicker(document.querySelector('#screen-select'));

Aktuellen Bildschirm anzeigen und auf Wechsel reagieren

const details = await window.getScreenDetails();

const showCurrent = () => {
  console.log('Fenster befindet sich auf:', details.currentScreen.label);
};

showCurrent();
// Wird ausgelöst, wenn das Fenster auf einen anderen Bildschirm wandert
details.addEventListener('currentscreenchange', showCurrent);
Fenster befindet sich auf: Built-in Retina Display

// Wichtig · Fallstricke

  • Browser-Unterstützung: Experimentell und nur in Chromium-Browsern (Chrome, Edge, Opera) ab Version 100 verfügbar. Firefox und Safari unterstützen sie nicht. Vor der Nutzung per 'getScreenDetails' in window prüfen.
  • Berechtigung und Kontext: getScreenDetails() braucht einen sicheren Kontext (HTTPS) und die Berechtigung window-management (früher window-placement). Lehnt der Nutzer ab, wird das Promise mit einem NotAllowedError abgelehnt. In iframes greift außerdem die Permissions-Policy.
  • Keine eindeutige Kennung: label kann leer sein oder bei baugleichen Monitoren doppelt vorkommen. Nicht als Schlüssel zum Speichern von Nutzereinstellungen verwenden. Besser Position und Größe (left, top, width, height) mit einbeziehen.
  • Datenschutz: Monitor-Modellnamen tragen zum Fingerprinting bei. Deshalb ist die Eigenschaft nur nach ausdrücklicher Zustimmung zugänglich.
  • Sicherheit: Den Wert per textContent und nicht per innerHTML in die Seite einfügen, weil er aus einer externen Quelle (Betriebssystem/EDID) stammt.
  • Die Eigenschaft ist schreibgeschützt. Zuweisungen werden stillschweigend ignoriert, im Strict Mode wird ein TypeError geworfen.