JavaScript'te window.open tarafından bir popup pencere açtım, bu popup penceresini kapattığımda ana sayfayı yenilemek istiyorum. (Onclose olayı?) Bunu nasıl yapabilirim?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
JavaScript'te window.open tarafından bir popup pencere açtım, bu popup penceresini kapattığımda ana sayfayı yenilemek istiyorum. (Onclose olayı?) Bunu nasıl yapabilirim?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Yanıtlar:
Ana pencereye ' window.opener ' kullanarak erişebilirsiniz , bu nedenle alt pencerede aşağıdakine benzer bir şey yazın:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
popupWindow.closed
kullanmayı kontrol etmeniz gerekecektir setInterval
.
Açılır pencerede dinleyebileceğiniz herhangi bir kapanış etkinliği yoktur.
Öte yandan, pencere kapatıldığında true olarak ayarlanmış bir kapalı özellik vardır.
Kapalı özelliği kontrol etmek için bir zamanlayıcı ayarlayabilir ve şu şekilde yapabilirsiniz:
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);
Bu çalışan Fiddle örneğine bakın !
alt sayfanıza şunları koyun:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
ve
<body onbeforeunload="refreshAndClose();">
ancak iyi bir UI tasarımı olarak, button
daha kullanıcı dostu olduğu için Close kullanmalısınız . aşağıdaki koda bakın.
<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' />
Bunu kullanıyorum:
<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()''>
pencere kapandığında ana pencereyi yeniler.
window.open, açılan URL'nin Aynı Kaynak Politikasına uygun olması koşuluyla, yeni oluşturulan pencereye bir referans döndürür .
Bu çalışmalı:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
Benim durumumda, ana sayfadaki bağlantı düğmesine tıklandığında bir açılır pencere açtım. Kullanarak çocuğu kapatırken ebeveyni yenilemek için
window.opener.location.reload();
çocuk pencerede alt pencerenin yeniden açılmasına neden oldu (Sanırım Görünüm Durumu nedeniyle olabilir. Yanlışsam düzeltin). Bu yüzden üst sayfadaki sayfayı yeniden yüklememeye ve sayfayı aynı url'yi ona atayarak tekrar yüklememeye karar verdim.
Açılır pencereyi kapattıktan sonra tekrar açılır pencerenin açılmasını önlemek için bu yardımcı olabilir,
window.onunload = function(){
window.opener.location = window.opener.location;};
Uygulamanız HTML5 özellikli bir tarayıcıda çalışıyorsa. PostMessage'ı kullanabilirsiniz . Orada verilen örnek, sizinkine oldukça benzer.
Ana sayfaya ebeveyn komutu ile ulaşabilirsiniz (ebeveyn penceredir) adımdan sonra her şeyi yapabilirsiniz ...
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 + "");
}