2012-04-26 15 views
21


Chcę napisać stronę internetową do quizu online. Podstawowym wymaganiem jest to, że osoba podejmująca quiz zmienia zakładkę lub otwiera nowe okno, nawet bez minimalizowania przeglądarki, czyli jeśli dana osoba próbuje zobacz odpowiedź z innego okna/karty, quiz powinien się zatrzymać. Jak mogę to zrobić?
P.S: nie powinna to być jakaś nowa funkcja HTML5. Chcę, aby była obecnie obsługiwana przez wszystkie najważniejsze przeglądarki.Javascript, aby wykryć, czy użytkownik zmienia zakładkę

+1

No na pewno zmienić w karcie mogą być wykryte za pomocą Javascript ile mi know.What chciałem wiedzieć, czy można wykryć zmiany w ostrości okna jak otwierając nową przeglądarkę! – Maxsteel

+0

Nie wykryjesz, czy dzieje się to w innym oknie przeglądarki. –

Odpowiedz

36

Można określić, czy jest aktywny przez dołączenie zdarzeń słuchacza rozmycie/ostrości oknie zakładka lub okno.

w jQuery byłoby

$(window).focus(function() { 
    //do something 
}); 

$(window).blur(function() { 
    //do something 
}); 

cytat z tego SO odpowiedzieć: https://stackoverflow.com/a/1760268/680578

+1

Zostałaby również zwolniona z powodu utraty ostrości w oknie, ale okno było nadal widoczne. – Matt

+1

Czy będzie w stanie wykryć, czy użytkownik uruchamia nowe okno/przeglądarkę bez konieczności minimalizowania okna quizu? – Maxsteel

+0

Jeśli pojawi się nowe wyskakujące okienko, utracisz fokus w bieżącym oknie, prawda? – Kristian

14

Jeśli kierujesz reklamy na przeglądarki, które go obsługują, możesz użyć interfejsu API Widoczność strony dostępnego w HTML5. Nie wykrywa ona bezpośrednio zmian tabulacji, ale zmienia widoczność. Obejmuje to (ale nie tylko) zmiany tabulatorów.

Zobacz https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API

+0

To jest poręczne API, ale należy zauważyć, że w tej chwili (6 marca 2015 r.) Istnieją pewne ograniczenia: 'Alt' +' Tab' (np. Włączanie aplikacji jakiegokolwiek rodzaju) nie rejestruje się w systemie Windows dla przeglądarki Firefox/Chrome/IE10. Jednak przełączanie kart w każdej przeglądarce działa dobrze. W systemie iOS przełączanie aplikacji lub blokowanie urządzeń ** ** powoduje zmianę widoczności. – scunliffe

4

Najlepsze rodzime ręce funkcyjne w dół, bez jQuery.

document.hasFocus 

Sprawdź pióro, sprawdzić, co się dzieje, gdy idziesz do łącza i z powrotem do zakładki codepen.

https://codepen.io/damianocel/pen/Yxxzdj

+0

Wydaje się pracować dla mnie w Opera, FireFox, Safari i Chrome. Nie testowałem w innych. – Umair

Powiązane problemy