Summary

  • Der W3C-Arbeitsentwurf Page Visibility vom 2. Juni 2011 gab einer Seite einen lesbaren Sichtbarkeitszustand und das Ereignis visibilitychange bei Änderungen.
  • Sein Mail-Beispiel war alltagsnah: Im sichtbaren Tab alle paar Sekunden nach Nachrichten fragen, im verborgenen Tab nur noch alle paar Minuten. Die Anwendung bestimmte den Takt.

Die Mailseite liegt hinter einem Stadtplan, einem langen Text und einer offenen Einkaufsliste. Ihr Besitzer ist anderswo. Sie fragt trotzdem wieder beim Server nach neuer Post. Und wieder. Ein gewissenhafter Pförtner klingelt alle paar Sekunden an einer leeren Wohnung. Wenn viele Tabs solchen Dienst tun, werden Prozessor und Akku zur Nachtschicht eingeteilt.

Der W3C-Entwurf vom 2. Juni 2011 begann bei dieser Wissenslücke. Der Browser weiß, welcher Tab im Vordergrund liegt, wann ein Fenster minimiert ist und ob ein Dokument auf einem Bildschirm erscheint. Die Seite erhielt mit document.hidden, einem Sichtbarkeitszustand und visibilitychange Zugang zu dieser Beobachtung. Der Browser meldete die Lage. Das Programm konnte seinen Arbeitsplan anpassen.

Als Beispiel diente ein Webmail-Client. Solange jemand die Nachrichtenliste betrachtet, kann eine Prüfung alle paar Sekunden nützlich sein. Sobald der Tab nach hinten rutscht, reichen womöglich einige Minuten Abstand. Diese Frequenz legt der Dienst fest, weil er den Wert seiner Meldungen kennt. Der Browser kennt die Stellung des Fensters. Ein kleines gemeinsames Signal machte aus zwei getrennten Kenntnissen eine brauchbare Entscheidung.

Die im Januar 2011 auf einer öffentlichen W3C-Liste verschickte Idee nannte auch andere Fälle: Eine Rätseluhr hält an, wenn der Spieler den Tab versteckt; regelmäßiges Nachfragen kann pausieren; ein Video wartet mit dem Start, bis sein Tab wirklich betrachtet wird. Die Anwendungen empfangen denselben Hinweis und handeln nach verschiedenen Gründen. Das Spiel schützt die Zeit seines Spielers, Mail spart Anfragen, Film wartet auf Publikum.

Was „verborgen“ bedeutet, stand nicht allein im Gefühl des Seitenautors. Der Entwurf führte einen Hintergrund-Tab, einen minimierten Browser und einen gesperrten Bildschirm als Beispiele an. Sobald wenigstens ein Teil des Dokuments auf einem Bildschirm sichtbar war, galt es als sichtbar. Auch Vergrößerungshilfen wurden berücksichtigt: Sie können den Bildschirm bedecken und dem Menschen die Seite trotzdem zeigen. Die Auskunft kam vom Browser, der die Darstellung organisiert, statt aus einer groben Vermutung über Fokus und Unschärfe.

Der Zustand kann im Laufe eines Tages mehrfach wechseln. Eine Abfrage beim Laden reicht nicht für jemanden, der kurz Mail liest, dann eine Karte öffnet und später wiederkehrt. visibilitychange meldet den Übergang, damit die Anwendung ihren Takt neu wählen kann. Der Last-Call-Entwurf vom Juli 2011 behielt diese Beispiele und arbeitete an der Schnittstelle weiter. Das gemeinsame Signal sollte wiederholt helfen, während die lokale Entscheidung bei der Seite blieb.

Die W3C-Empfehlung vom 14. Mai 2013 beschrieb hidden, visibilityState und visibilitychange sowie mögliche zusätzliche Zustände für Situationen wie Vorabrendern oder das Verlassen eines Dokuments. Die zweite Ausgabe vom 29. Oktober 2013 hatte eine sehr menschliche Änderung: In Abschnitt 4.3 wurde ein Schreibfehler im Namen von visibilitychange korrigiert. Nach Jahren der Arbeit an der Frage, wann eine Seite gesehen wird, brauchte der Ereignisname noch einen sorgfältigen Blick.

Das ist ein anderes Problem als bei Web Workers. Ein Worker gibt einer langen Berechnung einen Platz außerhalb der unmittelbaren Reaktion auf Klicks. Sichtbarkeit gibt einer Anwendung einen Grund, manche Arbeit seltener oder später auszuführen. Eine Mailseite könnte beides nutzen: Verarbeitung im Worker und weniger häufige Serverabfragen im Hintergrund. Der Ort der Arbeit und ihre Dienstzeiten gehören zu verschiedenen Entscheidungen.

Der Entwurf nannte CPU- und Energieeffizienz als Ziel. Die Mechanik wirkt fast häuslich. Wer einen leeren Raum kennt, muss den Pförtner nicht in unverändertem Tempo die Tür prüfen lassen. Der Browser konnte sehen, wann der Raum leer war. Mit Page Visibility bekam auch die Mailseite endlich Bescheid.