Ich habe einen JavaScript-Timer, der XMLHTTP-Anfragen auf einer konstanten Basis (einmal alle 10 Sekunden) macht. Ich würde gerne den Timer anhalten können, wenn das Fenster oder der Tab den Fokus verliert.
Ich bin mir der Ereignisse onFocus
und onBlur
auf dem Objekt window
voll bewusst, aber sie werden nicht in allen Browsern zuverlässig ausgelöst. Zum Beispiel, in Safari, Registerkarten lösen die Ereignisse nicht aus .
Einfacher Code unten destilliert die Funktionalität, die ich suche:
%Vor%Hat jemand da draußen eine Technik, um zu bestimmen, wann ein Browserfenster oder eine Registerkarte den Fokus verliert / gewinnt, der quer durch alle gängigen Browser funktioniert?
Es gibt eine weitere Stapelüberlauf-Frage zu diesem Thema. Sie haben das Tabbed-Browsing-Problem dort nicht angesprochen. Sie geben einen Link, der etwas ins Detail geht, aber ohne jquery zu verwenden.
Is Gibt es eine Möglichkeit zu erkennen, ob ein Browserfenster gerade nicht aktiv ist?
Ich glaube nicht, dass Fokus / Unschärfe-Ereignisse mit Tabbed Browsing in Safari funktionieren. Einige Leute haben Mausereignisse wie mouseleave / mouseenter vorgeschlagen.
Ich habe selbst einige UI-Probleme, also wenn ich etwas entdecke, werde ich hier weitermachen.
Eine Sache, die Sie beachten sollten, ist, dass die Registerkarte focus
/ blur
Ereignisse, die von Browser-Anbietern blockiert werden, möglicherweise eine Möglichkeit ist, Benutzer zu schützen. Einige Browser erlauben alert()
-style Popups (und sogar, glaube ich, eine focus()
-Methode), damit ein Tab den Fokus wiedererlangt. Das Blockieren der focus
/ blur
-Ereignisse für den Tab-Wechsel könnte dem Schutz gegen beispielsweise nicht angeforderte Popups und Fenstergrößen / Positionierung / Schließung ähnlich sein.
Tags und Links javascript cross-browser browser