2010-08-13 30 views
24

Tarayıcımı tıklayıp odağı açtığımda bir yöntemi bir kez çalıştırmanın bir yolu var mı? Ve sonra tarayıcı odağı kaybettiğinde ve daha sonra tekrar tekrar bu yöntemi çalıştırmak için odağı geri aldığında.tarayıcı olayı()

Teşekkürler,

çubuk.

cevap

39

Sen pencere alır veya odak (önemsiz örneğin http://jsfiddle.net/whQFz/ bakınız) kaybederse izlemek için window nesne üzerinde focus ve blur olay işleyicileri ekleyebilirsiniz. window geçerli tarayıcı bağlamına uygulanır (böylece bir pencere, bir sekme, bir çerçeve vb. Olabilir).

Not:focus etkinliği pencere odak aldığı her zaman ateş edeceği ve blur olay odağı kaybettiğinde her zaman tetikler. Odağı pencereden uzaklaştıran bir şey örneği, bir alert penceredir. Bir onfocus olay işleyicisinde uyarmaya çalışırsanız, sonsuz bir uyarı döngüsü elde edersiniz!

// Set global counter variable to verify event instances 
var nCounter = 0; 

// Set up event handler to produce text for the window focus event 
window.addEventListener("focus", function(event) 
{ 
    document.getElementById('message').innerHTML = "window has focus " + nIndex; 
    nCounter = nCounter + 1; 
}, false); 

// Example of the blur event as opposed to focus 
// window.addEventListener("blur", function(event) { 
// document.getElementById('message').innerHTML = "window lost focus"; }, 
// false); 
+5

Nasıl tarayıcı uyumluluğu ile bunun? –

12
$(document).ready(function() { $(window).one("focus", SomeFocusMethod); }); 

var SomeFocusMethod = function() 
{ 
    // do stuff 
    $(window).one("blur", SomeBlurMethod); 
} 

var SomeBlurMethod = function() 
{ 
    // do stuff 
    $(window).one("focus", SomeFocusMethod); 
} 
+2

Lütfen bu sorunun reddedildiğine ilişkin bir yorum ekleyin, en azından bana bu sorunun kabul edilebilir bir eki olarak görün. –

+0

Kabul edilebilir bir yanıt değildir, çünkü .one() yöntemi olmadığından, yalnızca bir .on() yöntemi vardır, yanıtı düzelttim. –

+11

jQuery'de bir 'one' yöntemi vardır ve oldukça kullanışlıdır: https://api.jquery.com/one/ – Lindsay

İlgili konular