Я написал плагин jQuery, который делает это: http://mths.be/visibility Он дает вам очень простой API, который позволяет вам выполнять обратные вызовы при изменении состояния видимости страницы.
Это делается с помощьюиспользуя API видимости страницы , где он поддерживается, и возвращаясь к старым добрым focus
и blur
в старых браузерах.
Демонстрация: http://mathiasbynens.be/demo/jquery-visibility
Этот плагин просто предоставляет два пользовательских события для использования: show
и hide
.При изменении состояния видимости страницы будет вызвано соответствующее событие.
Вы можете использовать их отдельно:
$(document).on('show', function() {
// the page gained visibility
});
… и…
$(document).on('hide', function() {
// the page was hidden
});
Поскольку большинствокогда вам понадобятся оба события, лучше всего использовать карту событий.Таким образом, вы можете связать оба обработчика событий за один раз:
$(document).on({
'show': function() {
console.log('The page gained visibility; the `show` event was triggered.');
},
'hide': function() {
console.log('The page lost visibility; the `hide` event was triggered.');
}
});
Плагин определит, поддерживается ли API видимости страницы в браузере или нет, и предоставит эту информацию как логическое значение (* 1031).* / false
) в $.support.pageVisibility
:
if ($.support.pageVisibility) {
// Page Visibility is natively supported in this browser
}