2009-08-10 5 views
4

一言で言えば、私はバディと私が使用するためのシンプルなチャットアプリケーションを書いた。アプリケーションを実行しているウィンドウにフォーカス(最小化または他のウィンドウの背後にある)がなく、メッセージが入ったときに、ウィンドウタイトルバーをアラートとして機能させたい。 Googleのチャットアプリケーションは、Gmailのようなものです。jQuery - ウィンドウフォーカス、ブラーイベントがトリガされない - FirefoxとChromeで動作する

FirefoxとChromeではすべて機能しますが、IE7では動作しません(8はテストされていません)。

これは、ウィンドウにフォーカスがあるかどうかを判断するために使用するコードです。これは、IEで動作するように別の方法で記述することはできますか?また、私は同じことを達成するための他のアプローチにも開放されています。事前に多くの感謝。

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

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

答えて

2

Googleチャットでは、フォーカスを確認するためにウィンドウを使用するとは思わない。あなたにチャットしているユーザーのテキストボックスを使用します。テキストボックスがフォーカスを受け取るとすぐに「言います...」がループを止めます。

マウスの動きを確認して、ウィンドウにフォーカスがあるかどうかを確認したい場合があります。それ以外に、私はまだページを生き生きとさせようとしているときに、フォーカスを求めてウィンドウをチェックする方法を見つけようとしています。

0

ドキュメント要素にバインドしようとするとどうなりますか?

2

jqueryのこのビットは、IEとすべての優れたブラウザ(chrome、ffなど)で動作します。重要なのは、IEのサポートのためにfocusin \ focusoutというドキュメントです。

$(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'); 
    }); 
}); 
+3

このスクリプトは、ページにテキストエリアがある場合、IE(8)で分割されます。テキストエリアをクリックすると、ドキュメントとウィンドウ**の両方がフォーカスを失います。テキストエリアとスイッチのタブに焦点を当ててスイッチバックすると、「ぼやけた」状態のままです。 –

+0

それは非常に興味深いです、私はそれを念頭に置いておく必要があります。 – mikeycgto

+0

IE8でこのjsfiddleで再現できませんでした。http://jsfiddle.net/KCW7G/8/ – mikeycgto

関連する問題