In a nutshell; I wrote a simplistic chat application for a buddy and me to use. When the window running the application does not have the focus (minimized or behind other windows) and a message comes in, I want to change the windows title bar to serve as an alert. Exactly like Google's chat application does in GMail.
Everything works flawlessly in Firefox and Chrome but not in IE7 (haven't tested 8).
This is the code I am using to determine if the window has focus. Can this be written differently to also work in IE? Also, I'm open to any other approaches to accomplish the same thing. Many thanks in advance.
$(window).bind("blur", function() {
hasfocus = false;
});
$(window).bind("focus", function() {
hasfocus = true;
});
I don't think google chat uses the window to check focus. It uses the textbox of the user chatting to you. As soon as the textbox receives focus " Says..." stops looping.
You might want to check for mouse movements to see if the window has focus. Other than that, I am still trying to figure out how to check the window for focus when trying to keep a page live.
This bit of jquery will work in IE and all the good browsers (chrome, ff etc). The key is document focusin\focusout for IE support.
$(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');
});
});
What happens if you attempt to bind to the document element?
来源:https://stackoverflow.com/questions/1255686/jquery-window-focus-blur-events-not-triggering-works-in-firefox-and-chrome