2009-08-03 11 views
3

Я пытаюсь обнаружить, когда пользователь переключается с текущей вкладки браузера на другую вкладку. Прослушивание window.onblur хорошо работает в firefox для обнаружения, когда пользователь переключает фокус на другое окно, но он не срабатывает, когда пользователь переключается на другую вкладку. Однако кажется, что onfocus запускается при переключении на соответствующую вкладку с другой вкладки.Можно ли определить, когда пользователь переключается на другую вкладку браузера?

Есть ли способ обнаружить, когда пользователь переключается с текущей вкладки?

+0

** Обновление: ** По состоянию на 2013 год все основные браузеры обеспечивают поддержку так называемой [visiblity API] (https://developer.mozilla.org/en-US/документы/Web/Руководство/User_experience/Using_the_Page_Visibility_API? redirectlocale = EN-US & redirectslug = DOM/Using_the_Page_Visibility_API). См. Здесь пример: http://stackoverflow.com/a/19519701/603003 – ComFreek

ответ

8

Очевидно, что в Firefox он будет работать для переключения вкладок, если вы используете document.onBlur вместо window.onblur для обработчика событий.

+0

Вау, не думал об этом, но это имеет смысл. Благодаря! –

3

Этот пример кода работал для меня. Я редактировал код, чтобы отображать окно предупреждения, когда я переключал вкладку (пожалуйста, не делайте этого). Это привело к бесконечному циклу ;-) и пришлось закрыть FF с помощью диспетчера задач.

Источник: http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

function onBlur() { 
    document.body.className = 'blurred'; 
}; 
function onFocus(){ 
    document.body.className = 'focused'; 
}; 

if (/*@[email protected]*/false) { // check for Internet Explorer 
    document.onfocusin = onFocus; 
    document.onfocusout = onBlur; 
} else { 
    window.onfocus = onFocus; 
    window.onblur = onBlur; 
} 
+1

Что это за волшебная проверка для Internet Explorer? –

+0

@maksymko - Это называется [условная компиляция] (http://msdn.microsoft.com/en-us/library/7kx09ct1%28v=VS.80%29.aspx). –

Смежные вопросы