Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Неактивные окна


Автор: DEER 4.12.2012, 18:45
Доброго времени суток!

Сложилось так, что js (всячиские периодические updater'ы) стало слишком много. Без них никак. Если открытых закладок много - начинает подвисать. Вот появилась мысль, можно ли как то поотключать их на неактивной закладки в браузере. Что то не гуглится толком ничего.

То есть вопрос в том, можно ли както отловить событие, что юзер переключил закладку или же страница потеряла фокус.

Не знаете, есть такое?

Автор: Arantir 4.12.2012, 19:10
Код

$(window).focus( function()
{
    alert('Вы только что переключились на эту вкладку!');
});
$(window).blur( function()
{
    alert('Вы ушли с этой вкладки!');
});


Можно и без JQuery, то много надо для кроссбраузерности кода строчить. В JQ все в одной функции уже инкапсулировано.

p.s.: Важно! Вызов alert'a тоже приводит к потере фокуса объекта window. Используйте focurs/blur аккуратно вместе с alert. Особенно не рекомендую пробовать мой пример в исходном виде =)
Если alert на сайте нет - все ОК.

Автор: DEER 4.12.2012, 19:13
у меня prototype, но такие события так есть, как то не подумал. Спасибо! Попробую

Добавлено через 9 минут и 17 секунд
Не то немного. При переключении "закладок" focus не сработает пока по контенту не нажмешь, клики по заголовкам закладок игнорируются. :(

Автор: skyboy 5.12.2012, 00:30
http://www.html5rocks.com/en/tutorials/pagevisibility/intro/ позволяет.
но надо чтоб скрипт изначально под это был заточен. 
настроек/плагинов браузерных подобных в глаза не слышал.

Автор: Arantir 5.12.2012, 01:42
DEER, а в FF focus срабатывает как раз при клике на вкладку.

Практика многих сайтов - делать таймаут относительно движения мыши/скроллинга. Например, в gmail в чате статус с "отошел" на "в сети" меняется после движения курсора на странице. А обратно на "отошел" меняется, соответственно, через Х секунд бездействия.

Автор: DEER 5.12.2012, 12:55
skyboy, спасибо, похоже как раз это, надо поэкспериментировать будет.

Arantir, такой подход немного не то, если я открою страничку, где то в планшете и положу его рядом, то страница то открыта и, например, уведомление должно прийти мне, а так получится, что страница неактивна и типа не должно прийти. Но все равно спасибо!

Автор: Aliance 5.12.2012, 14:06
HTML5 API конечно крутое, но пока на практике большие проекты выбирают этот путь определения IDLE

Цитата(Arantir @  5.12.2012,  02:42 Найти цитируемый пост)
Практика многих сайтов - делать таймаут относительно движения мыши/скроллинга. Например, в gmail в чате статус с "отошел" на "в сети" меняется после движения курсора на странице. А обратно на "отошел" меняется, соответственно, через Х секунд бездействия. 


Автор: DEER 5.12.2012, 15:23
Просто надо не бездействие ловить, а переклучение табов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)