Czy istnieje niezawodny sposób wykrywania, czy fokus na karcie jest możliwy w różnych przeglądarkach?
Scenariusz jest taki, że mamy aplikację, która regularnie sonduje ceny akcji, a jeśli strona nie jest skupiona, moglibyśmy zatrzymać sondowanie i zaoszczędzić wszystkim hałas uliczny, zwłaszcza że ludzie są fanami otwierania kilku zakładek z różnymi portfelami.
Jest window.onblur
i window.onfocus
opcja do tego?
javascript
optimization
polling
Fenton
źródło
źródło
Odpowiedzi:
Tak,
window.onfocus
iwindow.onblur
powinno działać w Twoim scenariuszu:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
źródło
onfocus
to crossbrowser, w którym wydarzenia, o których wspomniałeś, dotyczą tylko IE, nie rozumiem, dlaczego miałoby to być uznane przez ciebie za dobrą notatkę ..Ważna zmiana: ta odpowiedź jest nieaktualna. Od czasu jego napisania wprowadzono Visibility API ( mdn , przykład , specyfikacja ). To lepszy sposób na rozwiązanie tego problemu.
AFAIK,
focus
iblur
wszystkie są obsługiwane na ... wszystkim. (patrz http://www.quirksmode.org/dom/events/index.html )źródło
Szukając informacji o tym problemie, znalazłem zalecenie, aby skorzystać z API Page Visibility API . Większość nowoczesnych przeglądarek obsługuje ten interfejs API zgodnie z Can I Use: http://caniuse.com/#feat=pagevisibility .
Oto działający przykład (pochodzący z tego fragmentu ):
Aktualizacja: powyższy przykład miał właściwości z prefiksem dla przeglądarek Gecko i WebKit, ale usunąłem tę implementację, ponieważ te przeglądarki od jakiegoś czasu oferują interfejs API widoczności strony bez prefiksu. Zachowałem specyficzny prefiks Microsoft, aby zachować zgodność z IE10.
źródło
Zaskakujące, że nikt nie wspomniano
document.hasFocus
MDN ma więcej informacji.
źródło
Tak, to powinno działać dla Ciebie. Właśnie przypomniałeś mi o linku, na który natknąłem się, który wykorzystuje te techniki. ciekawa lektura
źródło
Zrobiłbym to w ten sposób (źródło http://www.w3.org/TR/page-visibility/ ):
źródło
Zabawne i łatwe w użyciu!
Następująca wtyczka przejdzie przez standardowy test dla różnych wersji IE, Chrome, Firefox, Safari itp. I odpowiednio ustali zadeklarowane metody. Zajmuje się również takimi kwestiami, jak:
Używanie jest tak proste, jak: Przewiń w dół do „ Uruchom fragment ”
źródło
jQuery(window).blur/focus
, która była niepożądana przez wielu, a więc jeden z powodów, dla których stworzyłem tę wtyczkę. Wtyczka ma pomóc w zapewnieniu tego, czego jQuery jeszcze nie zawiera