Подтвердить что ты не робот

Javascript, чтобы определить, включена ли вкладка пользователя


Я хочу написать веб-страницу для онлайн-викторины. Базисное требование у меня в том, что если человек, принимающий викторину, меняет вкладку или открывает новое окно, даже не сводя к минимуму браузер, то есть, если человек пытается увидеть ответ от некоторых другое окно/вкладка, опрос должна остановиться. Как я могу это сделать?
P.S: это не должна быть какая-то очень новая функция HTML5. Я хочу, чтобы она поддерживалась всеми основными браузерами в настоящее время.

4b9b3361

Ответ 1

Вы можете определить, активна ли вкладка или окно, добавив в окно прослушиватель событий размытия/фокусировки.

в jQuery это будет

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

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

цитируется из этого ответа SO: fooobar.com/questions/15747/...

Ответ 2

Если вы настроите таргетинг на браузеры, которые его поддерживают, вы можете использовать API видимости страницы, доступный в HTML5. Он не определяет непосредственно изменения вкладок, но, наоборот, меняется видимость. Это будет включать (но не ограничиваясь) изменения вкладок.

См. https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API

Ответ 3

Лучшая нативная функция, не требующая jQuery.

document.hasFocus

Проверьте ручку, проверьте, что произойдет, когда вы перейдете по ссылке и вернетесь на вкладку codepen.

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

Ответ 4

С помощью jQuery:

$(window).on('focus', function () {

});

$(window).on('blur', function () {

});

$().focus & $().blur размыты.