как получить начальный запуск window.onBind при загрузке страницы в Chrome, как в Firefox - PullRequest
2 голосов
/ 05 сентября 2011

У меня есть эта проблема: мне нужно, чтобы переменная была установлена ​​в false / true в зависимости от того, загружена ли страница в текущей вкладке или в неактивной вкладке. поэтому я попытался сделать это с помощью focus-event, более или менее так (это jquery):

var hasFocus = false;    
$(function() {
    $(window).focus(function() {
        hasFocus = true;
    });
});

firefox и т. Е. Он делает то, что я хочу: если страница загружена в активной вкладке, событие запускается немедленно, а в фоновой вкладке событие запускается только тогда, когда вкладка становится активной.

в chrome, однако событие не запускается при загрузке страницы в текущей активной вкладке. Кто-нибудь знает обходной путь для этого? я также пробовал такие события, как mouseenter, hover, но, к сожалению, они выполняются и при загрузке страницы в неактивной вкладке ... заранее спасибо!

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Я бы посоветовал вам попробовать мышиное движение как событие - например,

var humanHasInteracted = false;    
$(function() {
    $(window).mousemove(function() {
        humanHasInteracted = true;
    });
});

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

1 голос
/ 05 сентября 2011

Сложнее было бы это.

setInterval / setTimeout срабатывает не чаще одного раза в секунду для неактивных вкладок в Chrome. Таким образом, вы можете установить интервал (или тайм-аут) для запуска после, например, 10мс. Если он запускается только через гораздо более длительное время (например, 1 секунда), страница должна быть неактивной. В противном случае он будет запущен через 10 мс (как вы установили).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...