2012-06-27 15 views
6

मेरे पास एक एएसपी.Net वेब पेज है जो वर्तमान में आईओएस 4 पर काम करता है लेकिन आईओएस 5 पर नहीं।जावास्क्रिप्ट सेटटाइमआउट विंडो के बाद फायरिंग नहीं है। ओपन

मूल वेब पेज पर मेरे पास एक बटन है जो एक बाल विंडो खोलता है। और मैं ओपन विंडो कॉल के ठीक बाद पैरेंट विंडो में एक सेटटाइम रीफ्रेश चीज करता हूं।

मैंने आईफोन आईओएस 5 पर ध्यान दिया कि जब यह बच्चे की खिड़की खुलता है, तो मूल पृष्ठ में सेटटाइमआउट फ़ंक्शन तब तक नहीं कहा जाता है जब तक मैं मूल विंडो पर वापस नहीं जाता और फिर अद्यतन देखने के लिए बच्चे विंडो पर वापस नहीं जाता।

यहाँ पैरेंट पृष्ठ में मेरे कोड का एक टुकड़ा है और मैं जहां लगता है कि समस्या

WindowManager.OpenWindow('...') 
t = setTimeout(function() { handles[0].testfx(); }, 1000); 

इस iOS4 पर लेकिन iOS5 पर नहीं चलता है।

कोई विचार?

+3

कैसे आप रीफ्रेश करते हैं, इस बारे में कोई जानकारी नहीं है, मुझे नहीं लगता कि कोई भी मदद करने में सक्षम होगा। –

+2

शायद आईएसओ 5 जावास्क्रिप्ट निष्पादन को रोकता है जब पृष्ठ बैटरियों को बचाने के लिए पृष्ठभूमि पर होता है या कुछ इसी तरह से होता है। – Aristos

उत्तर

3

आईओएस 5 वास्तव में जावास्क्रिप्ट को रोकता है जब खिड़की सक्रिय विंडो नहीं होती है। इसके बारे में आप कुछ भी नहीं कर सकते हैं, इसलिए आप जो भी कर सकते हैं वह आपके सेटअप को बदलने का प्रयास कर रहा है ताकि आपकी विंडो पृष्ठभूमि में होने पर जावास्क्रिप्ट को चलाने की आवश्यकता न हो।

आपने कहा कि आप setTimeout refresh thing in the parent window कर रहे हैं। आप ऐसा क्यों कर रहे हो? वाकई, यह थोड़ा अजीब लगता है - जब आप अपना पेज भी नहीं देख पा रहे हैं तो आप कुछ भी ताज़ा क्यों करना चाहते हैं? लाइन handles[0].testfx(); आपके लिए क्या करती है?

+1

विंडो सक्रिय नहीं होने पर जेएस को संसाधित करना जारी रखने के कई कारण हो सकते हैं। मेरे सिर के ऊपर से, एक छोटी अवधि के लिए किसी सर्वर से कुछ प्रकार के कनेक्शन को जीवंत रखने के लिए हो सकता है ताकि उपयोगकर्ता को पृष्ठ पर वापस जाने पर कनेक्शन या प्रमाण-पत्रों को फिर से स्थापित न करना पड़े। –

+0

मुझे लगता है कि क्रोम कुछ ऐसा ही कर रहा है, इसकी जांच करने के लिए उपयोगी होगा। – Guillaume86

2

यह सिर्फ एक सुझाव है, क्योंकि मेरे पास इसका परीक्षण करने की पहुंच नहीं है, लेकिन आप window.postMessage का उपयोग कर इस के आसपास हैक करने में सक्षम हो सकते हैं। इसका एक उदाहरण here पाया जा सकता है।

अपने मामले में, आप शायद यह जांचना चाहेंगे कि आवश्यक समय बीत चुका है या नहीं, और window.postMessage फिर से कॉल करें, अन्यथा, अपने हैंडलर को कॉल करें।

मुझे यकीन नहीं है कि सक्रिय विंडो में नहीं होने पर, window.postMessage पर कितनी जल्दी कॉल किया जाएगा।

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