2010-08-13 17 views
24

वहाँ एक तरीका है कि जब मैं अपने ब्राउज़र पर क्लिक करें, और यह, ध्यान केंद्रित एक बार एक विधि को चलाने के लिए दे है? और फिर जब ब्राउज़र फोकस खो देता है और फिर उस विधि को फिर से चलाने के लिए फिर से ध्यान केंद्रित करें।ब्राउज़र घटना()

धन्यवाद,

रॉड।

उत्तर

39

आप विंडो हो जाता है या फोकस (एक छोटी सी उदाहरण के लिए http://jsfiddle.net/whQFz/ देखें) खो देता है पर नज़र रखने के window वस्तु पर focus और blur ईवेंट हैंडलर्स संलग्न कर सकते हैं। window मौजूदा ब्राउज़र संदर्भ (ताकि एक खिड़की, एक टैब, एक फ्रेम, आदि हो सकता है) पर लागू होता है।

नोट:focus घटना हर बार खिड़की ध्यान केंद्रित हो जाता है को सक्रिय कर देगा और blur घटना हर बार यह ध्यान केंद्रित खो देता है सक्रिय हो जाएगा। खिड़की से दूर ध्यान केंद्रित करने वाला कुछ उदाहरण alert विंडो है। यदि आप onfocus ईवेंट हैंडलर में अलर्ट करने का प्रयास करते हैं तो आपको अलर्ट का अनंत लूप मिलेगा!

// 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

कैसे ब्राउज़र संगतता के साथ यह क्या है? इस, प्रकट होता है के रूप में मेरे लिए कम से कम, इस सवाल का एक स्वीकार्य इसके होने की –

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

downvote के लिए कोई टिप्पणी शामिल करें। –

+0

यह एक स्वीकार्य जवाब है, क्योंकि वहां कोई .one() विधि नहीं है, वहाँ केवल एक .on() विधि, मैं तुम्हें जवाब देने में सुधार किया है। –

+11

jQuery में एक 'एक' विधि है और यह काफी आसान है: https://api.jquery.com/one/ – Lindsay

4

आप ब्राउज़रों नए IE9 से तुम सच में "पृष्ठ दृश्यता API" जावास्क्रिप्ट ब्राउज़र एपीआई का उपयोग करना चाहिए लक्षित कर रहे हैं: https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API

+3

यह जब ब्राउज़र विंडो अभी भी दिखाई दे रहा है, लेकिन ध्यान में नहीं मामले के लिए मदद नहीं कर रहा है। – Domi

संबंधित मुद्दे