2009-09-11 24 views
40

tôi cần phải sử dụng JQuery như follwoing:Sử dụng JQuery để ràng buộc "tập trung" và "mờ" chức năng cho "cửa sổ", không làm việc trong IE

var focusFlag = 1; 
jQuery(window).bind("focus", function(event) 
{ 
focusFlag = 1; 
}); 

jQuery(window).bind("blur", function(event) 
{ 
focusFlag = 0; 
}); 

Có ai biết tại sao điều này không làm việc cho IE?

+2

Lúc nguy cơ sounding ngu ngốc, bạn đã đưa rằng trong vòng một $ (document) .ready chặn? – karim79

+1

Không, tôi không đặt chúng trong một khối $. Nhưng tôi tìm thấy một cách khác mà không sử dụng cách JQuery: http://www.thefutureoftheweb.com/blog/detect-browser-window-focus –

+4

@Mickey Shine - hãy thử đặt chúng trong một khối $ (tài liệu) .ready. – karim79

Trả lời

94

Chỉ cần để có câu trả lời đúng ở đây:

$(function() { 
    $(window).focus(function() { 
     console.log('Focus'); 
    }); 

    $(window).blur(function() { 
     console.log('Blur'); 
    }); 
}); 

Lưu ý rằng trong FF và IE là "Focus" cháy sự kiện trên tải tài liệu ~, trong khi trong Chrome nó chỉ cháy nếu cửa sổ đã mất tập trung trước và bây giờ nó đã lấy lại nó.

+5

Đây là một năm cũ O_o – Phil

+39

Vẫn còn tốt để có câu trả lời. Đây là liên kết đầu tiên tôi tìm thấy về chủ đề này. –

+0

câu trả lời tuyệt vời, cảm ơn bạn đã đăng –

4

Tôi chỉ lặp lại những gì Shedal và roosteronacid đã nói, bạn cần DOM sẵn sàng trước khi bạn có thể ràng buộc sự kiện với nó nếu không trong một số máy tính trình duyệt sẽ nói không và nó sẽ chết âm thầm.

Để làm điều này bạn sử dụng jQuery .ready() chức năng giải thích bằng roosteronacid:

var focusFlag = 1; 

jQuery(document).ready(function(){ 
    jQuery(window).bind("focus",function(event){ 
     focusFlag = 1; 
    }).bind("blur", function(event){ 
     focusFlag = 0; 
    }); 
}); 

Những gì nó là .ready() chức năng sẽ chỉ lửa và chạy các mã bên trong nó khi DOM có hoàn toàn được tải từ máy chủ.

Chỉ những thay đổi thực sự tôi đã thực hiện là tôi ôm dấu ngoặc đơn để đọc dễ dàng nhưng đó là sở thích cá nhân.

3
$(window) 

không hoạt động trên tất cả các trình duyệt.

Hãy thử

$('body') 
+0

Trình duyệt nào không hoạt động? – NaturalBornCamper

Các vấn đề liên quan