2009-08-10 3 views
4

간단히 말하면; 나는 친구와 내가 사용하는 단순한 채팅 응용 프로그램을 썼다. 응용 프로그램을 실행하는 창에 포커스 (최소화 된 창 또는 다른 창 뒤에 있음)가없고 메시지가 들어올 때 창 제목 표시 줄을 경고로 사용하도록 변경하려고합니다. 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와 모든 좋은 브라우저 (크롬, 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

관련 문제