2012-05-23 44 views
9

पर काम नहीं करता है, मैं oauth लॉगिन पेज पर उपयोगकर्ताओं को रीडायरेक्ट करने के लिए window.open() के साथ एक नई विंडो खोलता हूं। हालांकि, सफल लॉगिन के बाद जब उपयोगकर्ता को मेरे ऐप पर रीडायरेक्ट किया जाता है तो विंडो के साथ पिछली विंडो। ओपन कॉल आईओएस में बंद नहीं होती है।window.close() आईओएस

आईपैड पर यह गलत विंडो बंद कर देगा और आईफोन पर यह विंडो को बंद नहीं करेगा। कोड एंड्रॉइड और क्रोम और फ़ायरफ़ॉक्स के डेस्कटॉप संस्करणों पर ठीक काम करता है।

बहुत rooting के बाद, मुझे एक फिक्स (नीचे पोस्ट) मिला। अगर किसी के पास कोई बेहतर विचार या मूल कारण हैं, तो कृपया यहां पोस्ट करें।

उत्तर

4

कुछ खोज के बाद, मैं इस ट्वीट पाया कौन-सी पोस्ट एक समाधान - https://twitter.com/#!/gryzzly/statuses/177061204114685952 द्वारा @gryzzly

पूर्ण

window.close() में यहाँ की प्रतिलिपि की गई आईओएस पर काम नहीं करता window.open के बाद() आईएनजी या लक्ष्य = "_ खाली"? सेटटाइमआउट करें (विंडो.क्लोज़, टाइमआउट); जहां टाइमआउट> 300.

इस नई विंडो बंद करने से पहले एक .focus() जिसमें मैं माता पिता के खिड़की पर ध्यान केंद्रित करने को हटाने के साथ-साथ पूरी तरह से समस्या मेरे लिए हल किया।

+2

यहां पोस्टर ट्वीट करें! वास्तव में 'window.addEventListener ("load", window.close) का उपयोग करना बेहतर सुझाव है; ' –

+0

मैं उस प्रोजेक्ट से आगे बढ़ गया हूं, इसलिए मुझे यकीन नहीं है कि मैंने वास्तव में' लोड 'की कोशिश की है या नहीं, लेकिन इससे समझ। भविष्य के लिए इसे दूर कर देंगे, धन्यवाद! – JohnP

+2

यह आईओएस 8 सफारी पर काम नहीं कर रहा है – walnutmon

6

यहां मैं काम करने के लिए समाप्त हो गया है ...
कभी भी विंडो.क्लोज़ फ़ंक्शन काम नहीं कर सकता;
        Windows XP:: Chrome20, Firefox12, IE8
        एंड्रॉयड जिंजरब्रेड: एंड्रॉयड ब्राउज़र
        एंड्रॉयड आइस क्रीम भी setTimeout के रूप में ऊपर

दिखाया में मैं इस पर परीक्षण किया : एंड्रॉइड ब्राउज़र, फ़ायरफ़ॉक्स
        आईपैड: डिफ़ॉल्ट ब्राउज़र (मैं इसकी सफारी मानता हूं)
        iPhone 3GS और 4s: डिफ़ॉल्ट


<SCRIPT LANGUAGE=\"JavaScript\"> 
    function refresh() { 
     var sURL = unescape("http://(some web page)/"); 
     window.location.replace(sURL); 
    } 
    function closeWindow() { 
     var isiPad = navigator.userAgent.match(/iPad/i) != null; 
     var isiPhone = navigator.userAgent.match(/iPhone/i) != null; 
     if (isiPad || isiPhone) { 
      setTimeout(\"refresh()\", 300); 
     } else { 
      window.close(); 
     } 
    } 
</SCRIPT> 

...... और html कोड .......

<p><input class="bigbutton" type="button" name="cancel" id="cancel" value="Cancel" onClick="closeWindow()"></p>