Window.openでJavaScriptでポップアップウィンドウを開いたのですが、このポップアップウィンドウを閉じるときに親ページを更新したいのですが(oncloseイベント?)どうすればよいですか?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
' window.opener 'を使って親ウィンドウにアクセスできるので、子ウィンドウに次のように書きます。
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
ポップアップウィンドウには、あなたが聞くことができるどんな近いイベントもありません。
一方、ウィンドウが閉じられるとtrueに設定されるclosedプロパティがあります。
あなたはその閉じられたプロパティをチェックして、それをこのようにするためにタイマーを設定することができます:
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);
これを参照してください working Fiddle example !
あなたの子供のページでは、これらを置きます:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
そして
<body onbeforeunload="refreshAndClose();">
しかし、優れたUIデザインとして、Close 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' />
私はこれを使う:
<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()''>
ウィンドウを閉じると、親ウィンドウが更新されます。
window.openは、開かれたURLが Same Origin Policy に準拠していれば、新しく作成されたウィンドウへの参照を返します。
これはうまくいくはずです。
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;
アプリがHTML 5対応ブラウザで実行されている場合 postMessage を使うことができます。そこに与えられた例はあなたのものと非常に似ています。
これを試してください
self.opener.location.reload();
現在のウィンドウの親を開いて場所を再読み込みしてください。
私の場合は、親ページのリンクボタンをクリックしてポップアップウィンドウを開きました。を使用して閉じた子に親を更新する
window.opener.location.reload();
子ウィンドウで子ウィンドウを開く原因となりました(ビューステートが原因の可能性があります。間違っていたら訂正してください)。それで私は親でページをリロードしないでそして同じURLをそれに割り当てて再びページをロードすることに決めました。
ポップアップウィンドウを閉じた後にポップアップが再び開かないようにするには、これが役立ちます。
window.onunload = function(){
window.opener.location = window.opener.location;};
あなたは親ページで以下のコードを使うことができます。
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
あなたがすべてを作ることができるステップの後にあなたは親コマンドで親ページに達することができます(親はウィンドウです)...
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 + "");
}
次のコードは親ウィンドウの投稿を閉じるように更新します。
function ManageQB_PopUp() {
$(document).ready(function () {
window.close();
});
window.onunload = function () {
var win = window.opener;
if (!win.closed) {
window.opener.location.reload();
}
};
}