Saya membuka jendela popup demi jendela. Buka di JavaScript, saya ingin menyegarkan halaman induk saat menutup jendela popup ini. (Onclose event?) Bagaimana cara melakukannya?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
Jawaban:
Anda dapat mengakses jendela induk menggunakan ' window.opener ', jadi, tulis sesuatu seperti berikut di jendela anak:
<script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script>
sumber
popupWindow.closed
penggunaansetInterval
like dalam solusi @ Zuul.Jendela pop-up tidak memiliki acara tutup apa pun yang dapat Anda dengarkan.
Di sisi lain, ada properti tertutup yang disetel ke true saat jendela ditutup.
Anda dapat menyetel pengatur waktu untuk memeriksa properti tertutup itu dan melakukannya seperti ini:
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);
Lihat contoh Fiddle yang berfungsi ini !
sumber
di halaman anak Anda, letakkan ini:
<script type="text/javascript"> function refreshAndClose() { window.opener.location.reload(true); window.close(); } </script>
dan
<body onbeforeunload="refreshAndClose();">
tetapi sebagai desain UI yang bagus, Anda harus menggunakan Close
button
karena lebih ramah pengguna. lihat kode di bawah ini.<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' />
sumber
Saya menggunakan ini:
<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()''>
ketika jendela menutupnya kemudian menyegarkan jendela induk.
sumber
window.open akan mengembalikan referensi ke jendela yang baru dibuat, asalkan URL yang dibuka sesuai dengan Kebijakan Asal yang Sama .
Ini harus bekerja:
function windowClose() { window.location.reload(); } var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no"); foo.onbeforeunload= windowClose;
sumber
Dalam kasus saya, saya membuka jendela sembulan saat mengklik tombol tautan di halaman induk. Untuk menyegarkan orang tua saat menutup anak menggunakan
window.opener.location.reload();
di jendela anak menyebabkan membuka kembali jendela anak (Mungkin karena Status Tampilan saya kira. Perbaiki saya Jika saya salah). Jadi saya memutuskan untuk tidak memuat ulang halaman di induk dan memuat halaman itu lagi menetapkan url yang sama untuk itu.
Untuk menghindari popup terbuka lagi setelah menutup jendela pop up, ini mungkin membantu,
window.onunload = function(){ window.opener.location = window.opener.location;};
sumber
Jika aplikasi Anda berjalan di browser yang mendukung HTML5. Anda dapat menggunakan postMessage . Contoh yang diberikan di sana sangat mirip dengan Anda.
sumber
Coba ini
sumber
Anda dapat mencapai halaman utama dengan perintah induk (induk adalah jendela) setelah langkah Anda dapat membuat semuanya ...
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 + ""); }
sumber
Anda dapat menggunakan kode di bawah ini di halaman induk.
<script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } </script>
sumber
Kode berikut akan mengatur untuk menyegarkan posting jendela induk tutup:
function ManageQB_PopUp() { $(document).ready(function () { window.close(); }); window.onunload = function () { var win = window.opener; if (!win.closed) { window.opener.location.reload(); } }; }
sumber