Gibt es eine zuverlässige browserübergreifende Methode, um festzustellen, ob eine Registerkarte den Fokus hat?
Das Szenario ist, dass wir eine Anwendung haben, die regelmäßig nach Aktienkursen fragt. Wenn die Seite keinen Fokus hat, können wir die Umfrage stoppen und allen den Verkehrslärm ersparen, insbesondere da die Leute gerne mehrere Registerkarten mit unterschiedlichen Portfolios öffnen.
Ist window.onblur
und window.onfocus
eine Option dafür?
javascript
optimization
polling
Fenton
quelle
quelle
Antworten:
Ja,
window.onfocus
undwindow.onblur
sollte für Ihr Szenario funktionieren:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
quelle
onfocus
ist Crossbrowser, wo die Ereignisse, die Sie erwähnt haben, nur IE sind. Ich kann nicht sehen, warum dies von Ihnen als eine gute Notiz angesehen wird.Wichtige Änderung: Diese Antwort ist veraltet. Seit dem Schreiben wurde die Sichtbarkeits-API ( mdn , Beispiel , spec ) eingeführt. Dies ist der bessere Weg, um dieses Problem zu lösen.
AFAIK,
focus
undblur
werden alle auf ... alles unterstützt. (siehe http://www.quirksmode.org/dom/events/index.html )quelle
Bei der Suche nach diesem Problem habe ich eine Empfehlung gefunden, die Page Visibility API zu verwenden. Die meisten modernen Browser unterstützen diese API gemäß Can I Use: http://caniuse.com/#feat=pagevisibility .
Hier ist ein Arbeitsbeispiel (abgeleitet von diesem Snippet ):
Update: Das obige Beispiel hatte früher Präfixeigenschaften für Gecko- und WebKit-Browser, aber ich habe diese Implementierung entfernt, da diese Browser seit einiger Zeit die Page Visibility API ohne Präfix anbieten. Ich habe das Microsoft-spezifische Präfix beibehalten, um mit IE10 kompatibel zu bleiben.
quelle
Überraschend zu sehen, dass niemand erwähnt wurde
document.hasFocus
MDN hat weitere Informationen.
quelle
Ja, die sollten für dich funktionieren. Sie haben mich nur an diesen Link erinnert, auf den ich gestoßen bin und der diese Techniken ausnutzt. interessante Lektüre
quelle
Ich würde es so machen (Referenz http://www.w3.org/TR/page-visibility/ ):
quelle
Spaß und einfach zu bedienen!
Das folgende Plugin durchläuft Ihren Standardtest für verschiedene Versionen von IE, Chrome, Firefox, Safari usw. und legt Ihre deklarierten Methoden entsprechend fest. Es befasst sich auch mit Themen wie:
Die Verwendung ist so einfach wie: Scrollen Sie nach unten zu " Snippet ausführen ".
quelle
jQuery(window).blur/focus
, die von vielen unerwünscht war, daher einer der Gründe, warum ich dieses Plugin gemacht habe. Das Plugin soll helfen, das bereitzustellen, was jQuery noch nicht getan hat