jQuery - фокусировка окна, не размытие событий размытия - работает в Firefox и Chrome - PullRequest
4 голосов
/ 10 августа 2009

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 17 апреля 2010

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

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

2 голосов
/ 05 апреля 2011

Этот бит 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');
    });
});
0 голосов
/ 10 августа 2009

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

...