2012-07-09 9 views
9

Tworzę okno wyskakujące, które przechodzi do pliku hello.html. Chcę, aby mój oryginalny (strona nadrzędna) przeładował się po zamknięciu okna popup (hello.html). Nie mogę sprawić, żeby zadziałało, ale jestem blisko. Oto kod mam tak daleko na stronie głównej i na stronie hello.html ....Odświeżające okno rodzica po zamknięciu wyskakującego okienka

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function open_win() 
{ 
window.open("hello.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400"); 
} 
</script> 


<script language="JavaScript"> 

function refreshParent() { 
    window.opener.location.href = window.opener.location.href; 

    if (window.opener.hello.html) 

{ 
    window.opener.hello.html.close() 
    } 
    window.close(); 
} 
</script> 


</head> 

<body> 

<script type="text/javascript"> 

var d=new Date(); 
document.write(d); 

</script> 

<form> 
<input type="button" value="Open Window" onclick="open_win()"> 
</form> 
</body> 
</html> 

Oto hello.html ...

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
</script> 
</head> 
<body> 

Hello 

</body> 
</html> 
+0

proszę sprawdzić: http://stackoverflow.com/questions/18321323/submit-form-reload-parent-and-close-child/36855748#36855748 może pomóc komuś – NoNaMe

Odpowiedz

11

Subskrybuj unload event w okno podrzędne i wywołanie okna nadrzędnego z okna podrzędnego, aby powiadomić, że jest zamykane!

Edit Dodany przykładowy kod ...

function popupClosing() { 
    alert('About to refresh'); 
    window.location.href = window.location.href; 
} 

var w = window.open("hello.html","_blank","toolbar=yes, location=yes, directories=no, status=no, menubar=yes, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400"); 
w.onunload = function() { 
    window.parent.popupClosing() 
}; 
+0

Nie wiem, co to znaczy ... –

+0

dziękuję ... zdecydowanie lepiej :) –

3

zrobić to w ten sposób, po utworzeniu popup monitorować swoją własność „zamknięty” stan w przedziale. Ale ten jest dodawany do dokumentu nadrzędnego:

var pop = window.open("page.html", "popup", 
      "width=800,height=500,scrollbars=0,title='popup'"); 
    pop.focus(); 

    var monitor = setInterval(function() { 

     if (pop.closed) { 
      document.location.reaload() 
     } 

    }, 1000); 
+0

To jest dość nieprzyjemne rozwiązanie, ale jest to jedyne, które zadziałało dla mnie w Chrome 55.0.2883.87. Wszystkie inne metody działałyby dobrze w przypadku zdarzenia onclick, co prowadzi mnie do przekonania, że ​​Chrome ogranicza to tylko do działań inicjowanych przez użytkownika, takich jak zmiana rozmiaru i przenoszenie okna. – Shaun

2

Spróbuj umieścić ten kod JavaScript w okienko:

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

/wydarzenie onunload wywoła po zamknięciu okienko i window.opener .location.reload() przeładuje okno źródłowe (macierzyste)./

1

na click przypadku podręcznego ścisłej funkcji try ...

window.opener.location.reload(true); 
0

Ten fragment kodu działa tak dobrze, jeśli się nowe okno jest zdejmowana z funkcją window.open.

setTimeout(function() { window.opener.location.reload(true); window.close();}, 3000); 
0

Umieść ten skrypt w nagłówku okna podręcznego:

<script type='text/javascript'> 
window.onunload = function(){ 
window.opener.location.reload();} 
</script> 

Będzie odświeżyć okno nadrzędne po zamknięciu popup.