2009-11-22 10 views
35

मैं पॉप अप में एक और यूआरएल लोड करने के लिए जावास्क्रिप्ट window.open() फ़ंक्शन को कॉल कर रहा हूं। एक बार उपयोगकर्ता समाप्त होने के बाद यह उन्हें अंतिम पृष्ठ पर ले जाता है जिसमें एक लिंक होता है जो विंडो बंद करता है जो window.close() फ़ंक्शन को कॉल करता है। अब जब वह पृष्ठ बंद हो जाता है तो मुझे उस मूल पृष्ठ में कुछ अपडेट करने की आवश्यकता होती है जिसने खिड़की खोली। क्या इसे करने का कोई तरीका है? मुझे एक ऐसे फ़ंक्शन को कॉल करना है जो मेरे मूल पृष्ठ में है।जब बच्चे की खिड़की बंद हो जाती है तो पैरेंट विंडो के फ़ंक्शन को कैसे चलाया जाए?

+0

देखें http://stackoverflow.com/questions/1112340/how-to-run-function-of-parent-window-when-child-window-closes –

उत्तर

54

आप किसी भी तरह इस कोशिश कर सकते हैं

window.open('Spawn.htm',''); 
window.somefunction = function(){ 

} 

आप नहीं करना चाहिए वें पर यह करो ई माता पिता, अन्यथा opener.somefunction() काम करेंगे नहीं, कर window.somefunction सार्वजनिक रूप somefunction बनाता है:

function somefunction(){ 

} 
+1

वही था जो मैं महान कार्यों के लिए देख रहा था। – ngreenwood6

+0

+1, मुझे सही समय पर मदद की। Window.somefunction = function {....} लेखन फ़ंक्शन कुछ फ़ंक्शन के रूप में समान है() {....} –

+1

यह आईई पर काम नहीं करता है अगर स्पॉन्टेड विंडो और पैरेंट विंडो एक ही डोमेन से नहीं हैं – Binod

9

शायद आप 'onbeforeunload' ईवेंट का उपयोग करना चाहते हैं। यह आपको बच्चे की खिड़की बंद होने से ठीक पहले बच्चे से पैरेंट विंडो में फ़ंक्शन कॉल करने की अनुमति देगा।

तो शायद कुछ इस तरह: पैदा की खिड़की

:

window.onunload = function (e) { 
    opener.somefunction(); //or 
    opener.document.getElementById('someid').innerHTML = 'update content of parent window'; 
}; 

जनक विंडो:

window.onbeforeunload = function (e) { 
    window.parent.functonToCallBeforeThisWindowCloses(); 
}; 
+0

ठीक है जो मुझे लगता है कि मैं क्या देख रहा हूं लेकिन यह कैसे पता चलेगा कि कौन सी विंडो मैं इस बारे में बात कर रहा हूँ।उदाहरण के लिए यदि मैं window.open() करता हूं और फिर मैं इसे नीचे जोड़ता हूं तो क्या यह उस विंडो को जानता है या मैं इसे उस विंडो से कैसे जोड़ूं? – ngreenwood6

+0

आप अपने बच्चे की विंडो के HTML में एक स्क्रिप्ट टैग में इसे पहले से लोड कर देंगे। चूंकि बाल विंडो में केवल एक माता-पिता होता है, ब्राउज़र स्वचालित रूप से जानता है कि वह मूल विंडो क्या है। –

+0

इसलिए यदि मेरे पास पैरेंट विंडो में doSomething() नामक एक फ़ंक्शन है लेकिन यह बाल विंडो में परिभाषित नहीं है, तो भी यह मुझे इसे चलाने की अनुमति देगा? – ngreenwood6

4

जवाब के रूप में वे पैदा की खिड़की पर कोड दर्ज करने की आवश्यकता है। यह अनावश्यक युग्मन है।

// In parent window 
var pop = open(url); 
pop.onunload = function() { 
    // Run your code, the popup window is unloading 
    // Beware though, this will also fire if the user navigates to a different 
    // page within thepopup. If you need to support that, you will have to play around 
    // with pop.closed and setTimeouts 
} 
0

मैं जानता हूँ कि इस पोस्ट पुरानी है, लेकिन मैंने पाया कि यह वास्तव में अच्छी तरह से काम करता है:

window.onunload = function() { 
    window.opener.location.href = window.opener.location.href; 
}; 

window.onunload हिस्सा संकेत मैं इस पृष्ठ googling पाया था। धन्यवाद, @ जेर्जर!

-2

निम्नलिखित link देखें। यह तब उपयोगी भी होगा ..

जनक विंडो में:

function OpenChildAsPopup() { 
     var childWindow = window.open("ChildWindow.aspx", "_blank", 
     "width=200px,height=350px,left=200,top=100"); 
     childWindow.focus(); 
} 

function ChangeBackgroudColor() { 
     var para = document.getElementById('samplePara'); 
     if (para !="undefied") { 
      para.style.backgroundColor = '#6CDBF5'; 
     } 
} 

जनक विंडो एचटीएमएल मार्कअप:

<div> 
    <p id="samplePara" style="width: 350px;"> 
      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    </p><br /> 
<asp:Button ID="Button1" Text="Open Child Window" 
     runat="server" OnClientClick="OpenChildAsPopup();"/> 
</div> 

चाइल्ड विंडो में:

// This will be called when the child window is closed.  
    window.onunload = function (e) { 
     opener.ChangeBackgroudColor(); 
     //or you can do 
     //var para = opener.document.getElementById('samplePara'); 
     //if (para != "undefied") { 
     // para.style.backgroundColor = '#6CDBF5'; 
     //} 
    }; 
7

यह एक पुरानी पोस्ट है , लेकिन मैंने सोचा कि मैं ऐसा करने के लिए एक और तरीका जोड़ूंगा:

var win = window.open("http://www.google.com"); 

var winClosed = setInterval(function() { 

    if (win.closed) { 
     clearInterval(winClosed); 
     foo(); //Call your function here 
    } 

}, 250); 

आपको सामग्री को संशोधित करने या बच्चे विंडो से किसी भी ईवेंट हैंडलर का उपयोग करने की आवश्यकता नहीं है।

+0

आप प्रतिभाशाली हैं, भाई! धन्यवाद!!! –

0

jerjer जवाब (ऊपर), अपने माता पिता के खिड़की और चाइल्ड विंडो में कभी कभी के साथ-साथ दोनों बाह्य या दोनों आंतरिक आप अपरिभाषित सलामी बल्लेबाज की एक समस्या देखेंगे, और आप पैरेंट पृष्ठ गुण उपयोग नहीं कर सकते नहीं हैं, को देखने के window.opener is undefined on Internet Explorer

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

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