Использование JQuery для связывания функций «focus» и «blur» для «window», не работает в IE - PullRequest
46 голосов
/ 11 сентября 2009

Мне нужно использовать JQuery, как показано ниже:

var focusFlag = 1;
jQuery(window).bind("focus", function(event)
{
focusFlag = 1;
});

jQuery(window).bind("blur", function(event)
{
focusFlag = 0;
});

Кто-нибудь знает, почему это не работает для IE?

Ответы [ 3 ]

99 голосов
/ 29 июня 2011

Просто чтобы получить правильный ответ здесь:

$(function() {
    $(window).focus(function() {
        console.log('Focus');
    });

    $(window).blur(function() {
        console.log('Blur');
    });
});

Обратите внимание, что в FF и IE событие "Focus" срабатывает при загрузке документа, в то время как в Chrome оно срабатывает только в том случае, если окно ранее теряло фокус и теперь оно восстанавливает его.

4 голосов
/ 20 июля 2011

Я повторяю только то, что сказали Шедал и roosteronacid, вам нужно, чтобы DOM был готов, прежде чем вы сможете привязать к нему события, иначе в некоторых браузерах компьютер скажет «нет», и он умрет молча.

Для этого вы используете функцию jQuery .ready (), объясненную roosteronacid:

var focusFlag = 1;

jQuery(document).ready(function(){
    jQuery(window).bind("focus",function(event){
        focusFlag = 1;
    }).bind("blur", function(event){
        focusFlag = 0;
    });
});

То, что она делает, - это функция .ready (), которая будет запускаться и запускать код внутри нее только после полной загрузки DOM с сервера.

Единственные реальные изменения, которые я сделал, это то, что я обнимаю мои скобки для легкого чтения, но это личное предпочтение.

3 голосов
/ 20 июля 2011
$(window)

работает не во всех браузерах.

Попробуйте

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