• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Browser Tab-Fokus / Visibility abfragen und reagieren

Darry

New member
Hi.

Ist es möglich, mit Javascript abzufragen, ob das Browser-Tab, in welchem die Webseite geöffnet ist, das Tab ist welches gerade den Fokus hat? Oder besser noch, ob das Tab vom User sichtbar ist oder das Tab bzw der Browser durch ein anderes Fenster überdeckt ist bzw der Browser minimiert ist.

JavaScript soll dann über eine Websocket-Verbindung den aktuellen Status an den Server melden.

Der Server soll dann darauf reagieren. Wenn ein User ohnehin nicht wirklich "zusieht", kann das Aktualisierungsintervall und Qualität zurückgefahren werden, um Ressourcen und Bandbreite einzusparen.

Außerdem sollen andere User auf der Webseite auch sehen können ob jemand aktiv teilnimmt oder es nur irgendwo im Hintergrund mitläuft.

LG
 
Hi.

Also ich hab nun mal ein bisschen recherchiert.
Es gibt die Visibility API.

Da gibt es z.B. visibilityState. Das erkennt aber nicht, wenn der User in ein anderes Programm switcht, und der Browser dabei verdeckt ist, also eigentlich gar nicht sichtbar ist. Solange der Browser die Seite auch gerade anzeigt, zählt sie dennoch als Sichtbar.
Minimize/Bildschirmschoner/Lock Screen/Standby-Modus wird aber teilweise erkannt.

Dann gibts noch tab focus, tab blur, window focus und window blur, was man mit javascript abfragen kann.
Damit kann man in Kombination relativ gut erkennen, wenn der User nicht mehr den Fokus auf der Seite hat, also "weggeswitcht" ist.
Allerdings führt schon ein Klick auf die Adressleiste dazu, dass der Fokus weg ist, oder auch der Klick in ein anderes Programm, selbst wenn der Browser noch voll sichtbar ist. (z.B. bei Dual monitor)

Nun muss man also am besten beides geschickt kombinieren, und man könnte wohl halbwegs das Ziel erreichen, herauszufinden, ob die Seite gerade auch gesehen werden kann.
 
Das hat er doch im Eingangsbeitrag beschrieben, meine ich.
Ein Ansatz wäre mit setTimeout, welches nach meinen Beobachtungen nicht weiterläuft wenn das Browserfenster nicht aktuell ist.
Um dies zu zeigen reicht mein uraltes Javascript Online Tool.
Mit Run baut sich ein Balken auf und ist nach wenigen Sekunden beendet. Wird gleich nach dem Run zu einen anderen Tab gewechselt und eine Weile gewartet, dann sieht man beim Zurückwechseln den Balken weiter wachsen.
 
Zurück
Oben