कब उपयोग करें window.opener / window.parent / window.top


जवाबों:


167
  • window.openerउस विंडो को संदर्भित करता है जिसे उस विंडो window.open( ... )को खोलने के लिए कहा जाता है जिससे इसे बुलाया जाता है
  • window.parentएक <frame>या में एक खिड़की के माता पिता को संदर्भित करता है<iframe>
  • window.top<iframe>उप-विंडो की एक या अधिक परतों में नेस्टेड विंडो से सबसे ऊपरी विंडो को संदर्भित करता है

उन हो जाएगा null(या शायद undefined) जब वे बात कर खिड़की की स्थिति के लिए प्रासंगिक नहीं कर रहे हैं। ("संदर्भ विंडो" का अर्थ वह विंडो है जिसके संदर्भ में जावास्क्रिप्ट कोड चलाया जाता है।)


1
धन्यवाद @ प्रतिक्रिया के लिए संकेत। मेरे पास एक मुख्य पृष्ठ है जो window.open()पेज सबमिट पर उपयोग करके एक बच्चा खोलता है । अब यह चाइल्ड विंडो उसी window.open()क्लोजिंग सेल्फ के साथ एक और चाइल्ड विंडो खोलती है। अब जब मैं अपना दूसरा बच्चा प्रस्तुत करता हूं (पहला बच्चा अब मौजूद नहीं है), मैं अपने मुख्य पृष्ठ के पृष्ठ तत्वों का उपयोग करना चाहूंगा। क्या यह दूसरे बच्चे से संभव है जब पहले से अधिक मौजूद नहीं है?
श्रीराम

4
@ श्रीराम: इस तरह की जानकारी आपको अपने सवाल में डालनी होगी, ताकि लोगों को पता चले कि आप वास्तव में किस समस्या को सुलझाने की कोशिश कर रहे हैं ।
josh3736

5
@ श्रीराम आपको window.opener.openerमध्यवर्ती पृष्ठ के चले जाने से पहले पकड़ना होगा ।
पॉइंट जूल

24

मुझे लगता है कि आपको अपने प्रश्न में कुछ संदर्भ जोड़ने की आवश्यकता है। हालाँकि, इन चीजों के बारे में बुनियादी जानकारी यहाँ मिल सकती है:

window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window.opener

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

window.parent https://developer.mozilla.org/en-US/docs/Web/API/Window.parent

मैंने इसका उपयोग ज्यादातर इफ्रेम्स के साथ काम करते समय किया है, जिसमें विंडो ऑब्जेक्ट के साथ संचार करने की आवश्यकता होती है जिसमें वे शामिल हैं।

window.top https://developer.mozilla.org/en-US/docs/Web/API/Window.top

यह सुनिश्चित करने के लिए उपयोगी है कि आप शीर्ष स्तरीय ब्राउज़र विंडो के साथ बातचीत कर रहे हैं। आप अपनी वेबसाइट को अन्य चीजों के अलावा, किसी अन्य साइट को रोकने के लिए इसका उपयोग कर सकते हैं।

यदि आप अपने प्रश्न में कुछ और विवरण जोड़ते हैं, तो मैं अन्य अधिक प्रासंगिक उदाहरणों की आपूर्ति कर सकता हूं।

अद्यतन: कुछ तरीके हैं जिनसे आप अपनी स्थिति को संभाल सकते हैं।
आपके पास निम्न संरचना है:

  • मुख्य खिड़की
    • संवाद १
      • डायलॉग 2 डायलॉग 1 द्वारा खोला गया

जब डायलॉग 1 डायलॉग 2 को खोलने के लिए कोड चलाता है, तो डायलॉग 2 बनाने के बाद, डायलॉग 1 ने डायलॉग 2 पर एक संपत्ति निर्धारित की है जो डायलॉग 1 ओपनर को संदर्भित करता है।

इसलिए यदि "चाइल्डविंडो" आप डायलॉग 2 विंडो ऑब्जेक्ट के लिए वेरिएबल हैं, और डायलॉग 1 विंडो ऑब्जेक्ट के लिए "विंडो" वेरिएबल है। डायलॉग 2 खोलने के बाद, लेकिन डायलॉग 1 को बंद करने से पहले, इसके जैसा असाइनमेंट करें:

childwindow.appMainWindow = window.opener

ऊपर असाइनमेंट बनाने के बाद, करीब डायलॉग 1. फिर डायलॉग 2 के अंदर चल रहे कोड से, आपको window.appMainWindowमुख्य विंडो, विंडो ऑब्जेक्ट को संदर्भित करने के लिए उपयोग करने में सक्षम होना चाहिए ।

उम्मीद है की यह मदद करेगा।


प्रतिक्रिया के लिए धन्यवाद @ मर्क। मेरे पास एक मुख्य पृष्ठ है जो window.open()पेज सबमिट पर एक बच्चे को खोलता है । अब यह चाइल्ड विंडो उसी window.open()क्लोजिंग सेल्फ के साथ एक और चाइल्ड विंडो खोलती है। अब जब मैं अपना दूसरा बच्चा प्रस्तुत करता हूं (पहला बच्चा अब मौजूद नहीं है), मैं अपने मुख्य पृष्ठ के पृष्ठ तत्वों का उपयोग करना चाहूंगा। क्या यह दूसरे बच्चे से संभव है जब पहले से अधिक मौजूद नहीं है?
श्रीराम

अद्यतन उत्तर। @ josh3736 - मैं यह नहीं देखता कि यह टिप्पणी कैसे सहायक है। मैं w3schools प्रमाणीकरण प्राप्त करने के लिए किसी को सलाह नहीं दे रहा हूं। यहां हर कोई जानता है कि कैसे google करें और window.opener, window.top, और window.parent की मूल परिभाषा प्राप्त करें। ऊपर दिए गए लिंक का उपयोग करें या नए संदर्भ ढूंढें, लेकिन जानकारी को नकल करने में शायद ही कोई बिंदु है जो यहां पर इन गुणों को परिभाषित करता है।
पर Ramp51

स्पष्टीकरण वास्तव में मददगार था @ MarkAtRamp51 धन्यवाद!
श्रीराम

3
लिंक बताता है - महान विस्तार से - w3schools के साथ क्या गलत है। बिंदु सूचना के एक आधिकारिक स्रोत के रूप में w3schools को बढ़ावा देने या (और इस प्रकार Google PageRank की) को बढ़ाने से बचने के लिए है। W3S खराब जानकारी फैलाता है, और समस्या का हिस्सा यह है कि इतने सारे लोग उस बुरी जानकारी से जुड़ते हैं। बेहतर होगा कि आप एमडीएन जैसे सूचना के अधिक विश्वसनीय स्रोत से जुड़ें
josh3736

5

शीर्ष, माता-पिता, सलामी बल्लेबाज (साथ ही खिड़की, स्व और iframe) सभी विंडो ऑब्जेक्ट हैं।

  1. window.opener -> वर्तमान पॉपअप विंडो को खोलने या लॉन्च करने वाली विंडो को लौटाता है।
  2. window.top -> सबसे ऊपरी विंडो को लौटाता है, यदि आप फ्रेम का उपयोग कर रहे हैं, तो यह फ्रेमसेट विंडो है, यदि फ्रेम का उपयोग नहीं कर रहे हैं, तो यह विंडो या स्वयं के समान है।
  3. window.parent-> वर्तमान फ्रेम या iframe के मूल फ्रेम लौटाता है। यदि आपके पास नेस्टेड फ़्रेम हैं, तो मूल फ़्रेम फ़्रेमसेट विंडो या कोई अन्य फ़्रेम हो सकता है। यदि फ़्रेम का उपयोग नहीं कर रहे हैं, तो माता-पिता वर्तमान विंडो या स्वयं के समान है

1

जब आप पॉपअप के साथ काम कर रहे होते हैं window.opener एक महत्वपूर्ण भूमिका निभाता है, क्योंकि हमें पेरेंट पेज के साथ-साथ चाइल्ड पेज से भी जूझना पड़ता है, जब हमें पेरेंट पेज पर मानों का उपयोग करना होता है तो हम window.opener का उपयोग कर सकते हैं या हम कुछ डेटा चाहते हैं लोडिंग के समय बच्चे की खिड़की या पॉपअप विंडो पर फिर हम window.opener का उपयोग करके मान सेट कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.