jQuery - фокус окна, события размытия не запускаются - работает в Firefox и Chrome

В двух словах; Я написал упрощенное приложение чата для приятеля и меня, чтобы использовать. Когда окно, в котором запущено приложение, не имеет фокуса (свернуто или позади других окон) и появляется сообщение, я хочу изменить строку заголовка окна, чтобы она служила предупреждением. Точно так же, как приложение чата Google делает в GMail.

Все работает безупречно в Firefox и Chrome, но не в IE7 (не проверял 8).

Это код, который я использую, чтобы определить, имеет ли окно фокус. Может ли это быть написано по-другому, чтобы также работать в IE? Кроме того, я открыт для любых других подходов для достижения того же. Спасибо заранее.

  $(window).bind("blur", function() {
    hasfocus = false;
  });

  $(window).bind("focus", function() {
    hasfocus = true;
  });

3 ответа

Решение

Я не думаю, что Google Chat использует окно, чтобы проверить фокус. Он использует текстовое поле пользователя, общающегося с вами. Как только текстовое поле получает фокус " Says..." перестает зацикливаться.

Возможно, вы захотите проверить движения мыши, чтобы увидеть, если окно имеет фокус. Кроме этого, я все еще пытаюсь выяснить, как проверить окно для фокуса при попытке сохранить страницу активной.

Этот фрагмент jquery будет работать в IE и во всех хороших браузерах (chrome, ff и т. Д.). Ключ документа focusin\focusout для поддержки IE.

$(function(){
    $(window).bind('blur', function(){
        console.debug('window blur');
    });

    $(window).bind('focus', function(){
        console.debug('window focus');
    });
    // IE EVENTS
    $(document).bind('focusout', function(){
        alert('document focusout');
    });

    $(document).bind('focusin', function(){
        alert('document focusin');
    });
});

Что произойдет, если вы попытаетесь привязать элемент документа?

Другие вопросы по тегам