2009-06-24 20 views
20

मैं एक ऐसी घटना की तलाश कर रहा हूं जो उपयोगकर्ता जब भी पेज से दूसरे टैब पर स्विच हो जाए, और दूसरी घटना जो आग लगती है जब उपयोगकर्ता फिर से टैब पर स्विच करता है।जब उपयोगकर्ता ब्राउज़र टैब स्विच करता है

window.onblur और window.onfocus don't seem to work correctly सभी ब्राउज़रों

भर में वहाँ एक प्रॉक्सी मैं इस घटना के संश्लेषण के लिए में देख सकता है?

+0

मैं यकीन है कि यह संभव नहीं है, कम से कम सभी ब्राउज़र में हूँ। –

+0

असल में, क्रॉस-ब्राउज़र संगतता [यह बुरा नहीं लगता है] (http://www.quirksmode.org/dom/events/blurfocus.html)। आपको फ़ायरफ़ॉक्स और सफारी/विंडोज के साथ कुछ दोगुनी घटनाएं मिलती हैं, लेकिन यह काम करने के लिए काफी आसान होना चाहिए। 'window.onfocus/onblur' ब्राउज़र युद्धों से पहले उपलब्ध है, और उनके व्यवहार में काफी बदलाव नहीं आया है। स्पष्ट रूप से कार्यान्वयन में कुछ _bugs_ हैं, लेकिन कोई भिन्न _semantics_ नहीं है। – lanzz

उत्तर

30

आप एक फ्रेमवर्क का उपयोग करने का प्रयास कर सकते हैं, जैसे म्यूटूल या jQuery जो क्रॉस-ब्राउज़र समर्थन प्रदान करते हैं। वे ब्राउज़र विंडो के लिए blur और focus ईवेंट के साथ अधिक विश्वसनीयता के साथ पता लगाने में सक्षम होना चाहिए।

मैं व्यक्तिगत रूप से बहुत सफलता के साथ jQuery का इस्तेमाल किया है:

$(window).blur(function(e) { 
    // Do Blur Actions Here 
}); 
$(window).focus(function(e) { 
    // Do Focus Actions Here 
}); 
+0

कूल, मैं यह देख सकता हूं कि jQuery – EoghanM

+0

@Daniel Hey में वास्तव में उन्हें कैसे कार्यान्वित किया जाता है, वास्तव में मैं एक समान प्रकार की कार्यक्षमता की तलाश में था। $ (विंडो)। फोकस (फ़ंक्शन (ई) {// यहां फोकस क्रियाएं करें}); फोकस के अंदर की सामग्री हर बार चलती है जब पृष्ठ में कुछ अन्य AJAX कार्यक्षमता होती है, लेकिन एक छोटा सा परिवर्तन, 1. क्या यह केवल एक ही पृष्ठ के अंदर कोड चलाने के लिए संभव है, जब उपयोगकर्ता एक ही पृष्ठ के बीच आगे और आगे निकलता है। –

+1

_5 साल बाद: _ धन्यवाद दोस्त! – MCTaylor17

6

तुम भी कोशिश करते हैं और VisibilityAPI उपयोग कर सकते हैं।

document.addEventListener("visibilitychange", function() { 
    if (document.hidden){ 
     console.log("Browser tab is hidden") 
    } else { 
     console.log("Browser tab is visible") 
    } 
}); 

See also here on Stackoverflow (possible duplicate)

+1

संभावित समाधान का एक लिंक हमेशा स्वागत है, लेकिन कृपया [लिंक के चारों ओर संदर्भ जोड़ें] (// meta.stackoverflow.com/a/8259) ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चल जाएगा कि यह क्या है है और यह क्यों है। ** यदि लक्षित साइट पहुंच योग्य नहीं है या स्थायी रूप से ऑफलाइन हो जाती है, तो हमेशा एक महत्वपूर्ण लिंक के सबसे प्रासंगिक भाग को उद्धृत करें। ** ध्यान रखें कि बाहरी साइट_ के लिंक से अधिक स्पष्ट रूप से होने का एक संभावित कारण है [क्यों और कुछ उत्तरों कैसे हटाए गए हैं?] (// stackoverflow.com/help/deleted-answers)। – Makyen

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