पॉपअप खोलें और नज़दीकी पॉपअप पर ताज़ा माता-पिता पृष्ठ


93

मैंने JavaScript में window.open द्वारा एक पॉपअप विंडो खोली है, जब मैं इस पॉपअप विंडो (ऑनक्लोज़ इवेंट?) को बंद करता हूं तो मैं पेरेंट पेज को रिफ्रेश करना चाहता हूं। मैं यह कैसे कर सकता हूं?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");

1
कृपया इसे देखें: stackoverflow.com/questions/18321323/… किसी की मदद कर सकते हैं
NoNaMe

जवाबों:


230

आप ' window.opener ' का उपयोग करके पैरेंट विंडो तक पहुँच सकते हैं , इसलिए, चाइल्ड विंडो में निम्न की तरह कुछ लिखें:

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>

मैं window.opener नहीं जानता था, धन्यवाद! मैं हमेशा बच्चे की सामग्री में एक चर में कॉलर विंडो डाल देता हूं। : - /
- एसई बुराई है

3
यदि आप बाल पृष्ठ (उदाहरण के लिए OAuth प्रवाह) पर जावास्क्रिप्ट को नियंत्रित नहीं करते हैं, तो आपको @ ज़ूल के समाधान की तरह popupWindow.closedउपयोग करने की आवश्यकता होगी setInterval
jchook

34

पॉप-अप विंडो में कोई करीबी घटना नहीं है जिसे आप सुन सकते हैं।

दूसरी ओर, एक बंद संपत्ति है जो खिड़की बंद होने पर सही पर सेट होती है।

आप उस बंद संपत्ति की जांच करने के लिए एक टाइमर सेट कर सकते हैं और इसे इस तरह से कर सकते हैं:

var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 

इस काम करने वाले फिडेल उदाहरण देखें !


1
मैं टाइमर का उपयोग नहीं करना चाहता! कोई और विचार?
ArMaN

1
थोड़ा हैकिश लेकिन मुझे लगता है कि टाइमर का उपयोग करना सभी ब्राउज़रों में सबसे अच्छा काम करेगा।
- एसई बुराई है

यदि पॉपअप के बंद होने से पहले पॉपअप के कई पृष्ठ हैं, तो यह भी सबसे अच्छा समाधान है, क्योंकि उपयोगकर्ता द्वारा पहले पृष्ठ से दूर नेविगेट करने के बाद ही ऑनलोड लोड घटना शुरू हो जाती है।
एंटोनचेनिंग

14

अपने बाल पृष्ठ पर, इन्हें डालें:

<script type="text/javascript">
    function refreshAndClose() {
        window.opener.location.reload(true);
        window.close();
    }
</script>

तथा

<body onbeforeunload="refreshAndClose();">

लेकिन एक अच्छा यूआई डिज़ाइन के रूप में, आपको एक बंद का उपयोग करना चाहिए buttonक्योंकि यह अधिक उपयोगकर्ता के अनुकूल है। नीचे कोड देखें।

<script type="text/javascript">
    $(document).ready(function () {
        $('#btn').click(function () {
            window.opener.location.reload(true);
            window.close();
        });
    });
</script>

<input type='button' id='btn' value='Close' />

जब पॉपअप विंडो बंद हो जाती है, तब नहीं जब उपयोगकर्ता पृष्ठ को रीफ्रेश करने के लिए बटन क्लिक करता है और पॉपअप विंडो बंद कर देता है
gengkev

@gengkev, मुझे पता था कि ओपी इस घटना को खिड़की के करीब रखना चाहता था, लेकिन मेरा मानना ​​है कि बटन का उपयोग करना बेहतर यूआई डिज़ाइन है। हालाँकि, मैंने दोनों के लिए कोड शामिल किया है। कृपया सलाह दें।
रे चेंग

मैंने <body onbeforeunload = "refreshAndClose ();"> <script type = "text / javascript"> function refreshAndClose () {window.opener.location.reload (true) का उपयोग किया; } self.close (); </ script>
steve0nz

3

मैं इसका उपयोग करता हूं:

<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}

</script>
<script type="text/javascript">
function refreshAndClose() {
    window.opener.location.reload(true);
    window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>

जब खिड़की इसे बंद कर देती है तो मूल विंडो को ताज़ा करती है।


2

window.open नई बनाई गई विंडो के लिए एक संदर्भ लौटाएगा, बशर्ते URL खोला समान मूल नीति का अनुपालन करता है

यह काम करना चाहिए:

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​

काम नहीं करेगा अगर उपयोगकर्ता खुली खिड़की में लिंक का पालन करने में सक्षम होगा। और मुझे पूरा यकीन है कि लक्ष्य URL के पहले लोड होने से पहले एक अनलोड घटना को फेंक दिया जाता है, जैसा कि आप स्पष्ट रूप से छोड़ते हैं: रिक्त। (एसओपी का उल्लेख करने के लिए +1)
- एसई बुराई है

2

मेरे मामले में मैंने मूल पृष्ठ में लिंकबटन पर क्लिक करने पर एक पॉप अप विंडो खोली। उपयोग करने वाले बंद बच्चे पर माता-पिता को ताज़ा करने के लिए

window.opener.location.reload();

चाइल्ड विंडो में बच्चे की खिड़की को फिर से खोलने का कारण हो सकता है (हो सकता है कि व्यू स्टेट की वजह से मैं अनुमान लगाता हूं। अगर मैं गलत हूं तो मुझे सुधारें)। इसलिए मैंने माता-पिता में पेज को फिर से लोड नहीं करने का फैसला किया और पेज को फिर से उसी यूआरएल को असाइन करने के लिए लोड किया।

पॉप अप विंडो को बंद करने के बाद पॉप अप खोलने से बचने के लिए इससे मदद मिल सकती है,

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

1

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


"अन्यथा, आप विभिन्न विंडो के बीच संवाद नहीं कर सकते।" गलत है। तकनीक अभी भी संभव है, हालांकि मैं @Moses से जवाब की सिफारिश करूंगा
gengkev

-1 को हटा दिया गया। आप एक छोटा सा उदाहरण देते हैं तुम भी मिल जाएगा एक +1 ;-)
Kay - एसई बुराई है

कोई बात नहीं। लेकिन मुझे नहीं लगता कि window.opener IE के लिए ठीक है। मेरी एक कोशिश होगी।
क्रिस ली ने

1
@kay, IE7 में बहुत अच्छा काम करता है। 8. बहुत अच्छा, मैं इसे पहले नहीं जानता था। मूसा के लिए +1।
क्रिस ली ने

1
@ArMaN: jsfiddle.net/8c2e4/10 , window.opener का उपयोग करें। आप अपने पर्यावरण का परीक्षण करने के लिए इसका उपयोग कर सकते हैं।
क्रिस ली

1

इसे इस्तेमाल करे

        self.opener.location.reload(); 

वर्तमान विंडो के जनक खोलें और स्थान को फिर से लोड करें।


0

आप पैरेंट कमांड के साथ मुख्य पृष्ठ पर पहुंच सकते हैं (पैरेंट विंडो है) कदम के बाद आप सब कुछ कर सकते हैं ...

    function funcx() {
        var result = confirm('bla bla bla.!');
        if(result)
            //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + "");
            parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + "");
    } 

0

आप मूल पृष्ठ में नीचे दिए गए कोड का उपयोग कर सकते हैं।

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>

0

निम्नलिखित कोड मूल विंडो पोस्ट को ताज़ा करने का प्रबंधन करेगा:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.