2012-08-03 14 views
13

पर चल रहा है आग नहीं करता है यह अच्छी तरह से पता है कि मोबाइल सफारी एक वेबपेज पर Javascript क्रियान्वयन रुक जाता है जबPagehide घटना जब आईपैड

  1. आप अन्य ब्राउज़र टैब
  2. स्विच करने के लिए करने के लिए स्विच एक अलग iOS एप्लिकेशन (जैसे जब आप फ़ोन ऐप एक इनकमिंग कॉल प्राप्त)

आप विंडो के "pagehide" और "pageshow" पूर्व संध्या की सदस्यता ले सकते एनएसटी आने वाले निलंबन और जावास्क्रिप्ट के पुनर्सक्रियण का पता लगाने के लिए।

समस्या है, उन घटनाओं आग नहीं है जब टैब-स्विचिंग (1.) एक आईपैड मोबाइल सफारी पर। आईफोन मोबाइल सफारी सब कुछ ठीक जैसा ऊपर वर्णित है।

यह प्रदर्शित करने के लिए तुच्छ है:

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
     window.addEventListener("pagehide", function(evt){ 
      var logger = document.getElementById('log_id'); 
      logger.innerText = logger.innerText + " pagehide fired!"; 
     }, false); 
    </script> 
</head> 
<body> 
<div id="log_id"></div> 
</body> 
</html> 

यह iPads (iOS5 और iOS6 Preview3) केवल जब टैब-स्विच (1.) पर एप्लिकेशन-स्विचिंग (2.) और नहीं कर रही पर सक्रिय करता है। सभी iPhones ठीक काम करते हैं ..

क्या कोई भी आईपैड ब्राउज़र पर एक आसन्न टैब-स्विचिंग का पता लगाने में सक्षम है?

फिर से सक्रिय होने जावास्क्रिप्ट का जब टैब को फिर से सक्रिय हो जाता है this discussion of the same topic में वर्णित के रूप में एक दिल की धड़कन पाश द्वारा पता लगाया जा सकता है।

+0

यह ईवेंट तब भी बंद हो जाता है जब डिवाइस लॉक हो जाता है। आप पेजशो का उपयोग कर सकते हैं जो डिवाइस अनलॉक होने पर आग लग जाएगी और पेज फिर से दिखाया जाएगा। –

+0

क्या आपने [window.onblur] (https://developer.mozilla.org/en-US/docs/Web/API/window.onblur) को आजमाया था? यह काम कर सकता है। – Uooo

उत्तर

1

दस्तावेज़ पर फ़ोकस और धुंध की जांच करने का प्रयास करें।

आपको पृष्ठ दृश्यता API की आवश्यकता क्यों है?

  1. आप अन्य पृष्ठों को कहने के लिए स्टोरेज ईवेंट का उपयोग कर सकते हैं, जो सक्रिय हैं।
  2. आप अंतिम टाइमर आग से समय की जांच के लिए टाइमर (सेट इंटरवल) का उपयोग कर सकते हैं। और यदि यह अपेक्षा से अधिक बड़ा है - पृष्ठ छुपा था, क्योंकि अधिकांश ब्राउज़र टाइमर को रोकते हैं तो पृष्ठ छिपा हुआ होता है।
0

मैं पिनल से सहमत हूं: फोकस/धुंध का उपयोग करें! लेकिन मैं दस्तावेज़ पर नहीं, बल्कि खिड़की पर सुझाव देता हूं। बस उन्हें श्रोता पंजीकृत करें और वहां अपनी सामग्री करें।

http://caniuse.com/#feat=pagevisibility राज्यों के रूप में, आप जिस सुविधा का उपयोग करना चाहते हैं वह अच्छी तरह कार्यान्वित नहीं है। (संपादित करें: इसे मिनी टेस्ट-केस में बस परीक्षण किया गया है - यह आईओएस 5/6 पर काम करता है - भले ही caniuse.com अलग-अलग कहता है)

यदि आप टाइमर का उपयोग करने का प्रयास करते हैं, तो आप अनुरोध करने का प्रयास कर सकते हैंएनिमेशन फ्रेम को अंतराल के विकल्प के रूप में ।

+0

मैं एक एचटीएमएल 5 गेम लिख रहा हूं, जब मैं एक खिलाड़ी खेल से दूर जाता हूं, तो मैं भौतिकी को रोक रहा हूं, धुंध और फोकस घटनाएं आईओएस 6.1.3 जैसे सफारी में मेरे लिए फायरिंग नहीं कर रही हैं। '$ (विंडो) .on ('ब्लर', _ पॉज़गेम) 'जब मैं टैब स्विच करता हूं और आईओएस होमस्क्रीन पर लौटता हूं, तो ईवेंट डेस्कटॉप पर पूरी तरह से काम करता है। – Rob

1

आईओएस 7 में ऐप्पल द्वारा तय किया गया। (बस आईपैड सिम्युलेटर में कोशिश की गई)