मेरे पास कुछ जावास्क्रिप्ट है जो window.open और इंटर-विंडो संचार (जहां नया 'बच्चा' विंडो communicates success/failure to the 'parent' window) के उपयोग पर निर्भर करता है।अंतर-विंडो संचार के लिए ब्राउज़र समर्थन का पता लगाएं
यह (इंटर-विंडो संचार) ज्यादातर मामलों में ठीक काम करता है, लेकिन कुछ ब्राउज़र के लिए काम नहीं करता है जो इंटर-विंडो संचार का समर्थन नहीं करते हैं। उदाहरणों में Windows Phone और iPhone's UIWebView शामिल हैं।
मैं वर्तमान में इन परिदृश्यों का पता लगाने के लिए क्लाइंट-साइड (जावास्क्रिप्ट आधारित) user-agent sniffing करता हूं - और समस्या को हल करने के लिए एक अलग कोड पथ पर फ़ॉलबैक करता हूं।
क्या उपयोगकर्ता-एजेंट स्नीफिंग का कोई विकल्प है जिसका मैं उपयोग कर सकता हूं?
स्पष्ट होने के लिए, window.open काम करता है (जहां काम करता है 'यह अनुरोधित यूआरएल खोलता है')। विश्वसनीय नहीं है। Window.opener और postMessage का उपयोग 'बच्चे' से 'पैरेंट' तक इंटर-विंडो संचार करने के लिए किया जाता है।
बच्चा विंडो.ऑनर संपत्ति तक भी पहुंच सकता है - जो शून्य होना चाहिए - लेकिन दुर्भाग्यवश यह विश्वसनीय पहचान तकनीक नहीं है। उदाहरण के तौर पर, यदि आप सीधे बच्चे की खिड़की खोलते हैं (माता-पिता से window.open का उपयोग किए बिना) तो window.opener शून्य हो जाएगा, भले ही बच्चा वास्तव में इंटर-विंडो संचार का समर्थन करता हो। – mjwills
मुझे पता है कि 'window.open' काम करेगा, लेकिन क्या फ़ंक्शन बाल विंडो आईडी लौटाएगा? – Raptor
मुझे यकीन नहीं है कि यह जानकारी कैसे मदद करेगी। मैं जो चाहता हूं वह बाल खिड़की के अंदर फीचर डिटेक्शन है कि क्या यह अपने माता-पिता से बात कर सकता है या नहीं। Window.open फ़ंक्शन कॉल का वापसी मूल्य केवल माता-पिता के लिए उपलब्ध है - इसलिए 'यह इस एयरटाइट हैचवे के दूसरी तरफ होने के बजाय शामिल है'। यह सब कहा जा रहा है, वापसी मूल्य की जांच मोबाइल आईई 9 में शून्य, और UIWebView में एक विंडो ऑब्जेक्ट। और ध्यान दें कि दोनों मामलों में नई विंडो सही ढंग से लोड की गई थी (लेकिन इसके माता-पिता के साथ संवाद करने में असमर्थ रहेगी)। – mjwills