Abri uma janela pop-up por window.open em JavaScript, quero atualizar a página pai quando fechar esta janela pop-up. (Evento onclose?) Como posso fazer isso?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Abri uma janela pop-up por window.open em JavaScript, quero atualizar a página pai quando fechar esta janela pop-up. (Evento onclose?) Como posso fazer isso?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Respostas:
Você pode acessar a janela principal usando ' window.opener ', então, escreva algo como o seguinte na janela secundária:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
popupWindow.closed
usando setInterval
a solução do @Zuul.
A janela pop-up não possui nenhum evento de fechamento que você possa ouvir.
Por outro lado, existe uma propriedade fechada que é definida como true quando a janela é fechada.
Você pode definir um cronômetro para verificar essa propriedade fechada e fazer assim:
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);
Veja este exemplo funcional do Fiddle !
na página do seu filho, coloque estes:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
e
<body onbeforeunload="refreshAndClose();">
mas como um bom design de IU, você deve usar um Close button
porque é mais amigável. veja o código abaixo.
<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' />
Eu uso isso:
<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()''>
quando a janela é fechada, ela atualiza a janela pai.
window.open retornará uma referência à janela recém-criada, desde que a URL aberta esteja em conformidade com a Política de Mesma Origem .
Isso deve funcionar:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
No meu caso, abri uma janela pop-up clicando no botão do link na página principal. Para atualizar o pai ao fechar o filho usando
window.opener.location.reload();
na janela secundária, a janela secundária foi reaberta (pode ser devido ao estado de exibição, eu acho. Corrija-me se eu estiver errado). Portanto, decidi não recarregar a página no pai e carregar a página novamente atribuindo o mesmo url a ela.
Para evitar que o pop-up abra novamente após fechar a janela pop-up, isso pode ajudar,
window.onunload = function(){
window.opener.location = window.opener.location;};
Se o seu aplicativo for executado em um navegador habilitado para HTML5. Você pode usar postMessage . O exemplo dado aqui é bastante semelhante ao seu.
Você pode chegar à página principal com o comando pai (pai é a janela) após a etapa, você pode fazer tudo ...
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 + "");
}