2012-06-18 22 views
7

में एक नए टैब पर जाने का पता लगाएं मेरे पास पॉपअप (मोबाइल सफारी में नए टैब) खोलने वाले पृष्ठों की एक श्रृंखला है। इनमें से प्रत्येक पॉपअप को यह जानने की आवश्यकता है कि वे कब केंद्रित हैं या नहीं। डेस्कटॉप पर, हम इस व्यवहार को चलाने के लिए window.onblur और window.onfocus का उपयोग करते हैं। हालांकि, इनमें से कोई भी कार्यक्रम आईपैड पर काम नहीं करता है। मैंने window.onpageshow और window.onpagehide भी कोशिश की जो सही समय पर आग लगती नहीं है।मोबाइल सफारी

<html> 
<head> 
<script language="javascript"> 
console.log('Hello'); 
window.onblur = function(e) { console.log('blur'); }; 
window.onfocus = function(e) { console.log('focus'); }; 
window.onpagehide = function(e) { console.log('pagehide'); }; 
window.onpageshow = function(e) { console.log('pageshow'); }; 
</script> 
</head> 
<body> 
<a href="http://www.google.com" target="_blank">Click Me</a> 
</body> 
</html> 

सिद्धांत रूप में, 'मुझे क्लिक करें' जब आप क्लिक जब नई विंडो प्रकट होता है, यदि आप एक कलंक घटना मिलना चाहिए: मैं एक परीक्षण HTML फ़ाइल है। लेकिन यह मोबाइल सफारी पर नहीं होता है। onpagehide और onpageshow कोई प्यार नहीं दिखाता है, वे केवल टैब को बंद करने के बारे में पता लगाने में सहायता करते हैं।

मैं मोबाइल सफारी में जो व्यवहार ढूंढ रहा हूं उसे मैं कैसे प्राप्त कर सकता हूं? क्या यह सभी के लिए संभव है?

उत्तर

4

मुझे नहीं लगता कि कि onblur पता लगाया जा सकता है, लेकिन यह पता लगाने के लिए एक कोड onfocus है:

var timestamp=new Date().getTime(); 
function checkResume() 
{ 
    var current=new Date().getTime(); 
    if(current-timestamp>5000) 
    { 
     var event=document.createEvent("Events"); 
     event.initEvent("focus",true,true); 
     document.dispatchEvent(event); 
    } 
    timestamp=current; 
} 
window.setInterval(checkResume,50); 

तो फिर तुम सिर्फ लिखने:

document.addEventListener("focus",function() 
{ 
    alert("Focus detected"); 
},false); 
5

इसे आजमाएं: https://gist.github.com/1122546

यह एक विज़िबिली एपीआई पॉलीफिल है। चाल करना चाहिए।

+0

धन्यवाद, यह सिर्फ टिकट की तरह दिखता है! –

+0

वास्तव में क्रिस किले की टिप्पणी के अनुसार, यह मोबाइल सफारी में काम नहीं कर सकता है। मेरे पास अभी मेरा आईपैड नहीं है - अगर वह जो कहता है वह सच है, तो मोबाइल सफारी के लिए इसके आसपास कोई रास्ता है? –

+6

वास्तव में, यह ** ** ** आईओएस पर काम नहीं करता है। – arik

0

किसी ने एक ही चीज़ को हाल ही में पूछा है, इसलिए मैं इस उत्तर को अपने पुराने एक here से लिंक करूंगा।

मैगेक की विधि मैं जो कर रहा हूं उसके समान ही है, लेकिन स्क्रॉल ईवेंट पर या कीबोर्ड दिखाई देने पर भी आग लग जाएगी। स्क्रॉलिंग पर व्यवहार को रोकना बहुत चुनौतीपूर्ण नहीं था, लेकिन मैं ऑन-स्क्रीन कीबोर्ड ईवेंट देखने के लिए कभी नहीं मिला।

मेरा ऑब्जेक्ट भी अनुरोध लेता हैएनीमेशन फ्रेम और फोकस के रूप में फोकस हैक का उपयोग करेगा, जहां उपलब्ध दृश्यता API का उपयोग करने का विकल्प चुनता है (आदर्श रूप से इसे भविष्य-सबूत बनाते हैं)।

+0

यह केवल तभी बताएगा जब आप टैब में वापस आते हैं, है ना? मैं जानना चाहता हूं कि इस कोड का टैब अब ऑनस्क्रीन नहीं है, और टैब को फिर से खोलने से पहले इसे जानें। –

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