Подтвердить что ты не робот

Использование JQuery для привязки функций "focus" и "blur" для "окна" не работает в IE

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

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

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

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

4b9b3361

Ответ 1

Просто для правильного ответа здесь:

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

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

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

Ответ 2

Я только повторяю, что сказал Шелад и 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

$(window)

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

Try

$('body')