web-dev-qa-db-ja.com

ポップアップを開き、ポップアップを閉じると親ページを更新します

Window.openでJavaScriptでポップアップウィンドウを開いたのですが、このポップアップウィンドウを閉じるときに親ページを更新したいのですが(oncloseイベント?)どうすればよいですか?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
85
ArMaN

' window.opener 'を使って親ウィンドウにアクセスできるので、子ウィンドウに次のように書きます。

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>
212
Morrison

ポップアップウィンドウには、あなたが聞くことができるどんな近いイベントもありません。

一方、ウィンドウが閉じられると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

32
Zuul

あなたの子供のページでは、これらを置きます:

<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' />
13
Ray Cheng

私はこれを使う:

<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()''>

ウィンドウを閉じると、親ウィンドウが更新されます。

3

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;​
2
cranz

アプリがHTML 5対応ブラウザで実行されている場合 postMessage を使うことができます。そこに与えられた例はあなたのものと非常に似ています。

1
Chris Li

これを試してください

        self.opener.location.reload(); 

現在のウィンドウの親を開いて場所を再読み込みしてください。

1
nmkyuppie

私の場合は、親ページのリンクボタンをクリックしてポップアップウィンドウを開きました。を使用して閉じた子に親を更新する

window.opener.location.reload();

子ウィンドウで子ウィンドウを開く原因となりました(ビューステートが原因の可能性があります。間違っていたら訂正してください)。それで私は親でページをリロードしないでそして同じURLをそれに割り当てて再びページをロードすることに決めました。

ポップアップウィンドウを閉じた後にポップアップが再び開かないようにするには、これが役立ちます。

window.onunload = function(){
    window.opener.location = window.opener.location;};
1
Jitendra Sawant

あなたは親ページで以下のコードを使うことができます。

<script>
    window.onunload = refreshParent;
    function refreshParent() {
      window.opener.location.reload();
    }
</script>
0
muqofa

あなたがすべてを作ることができるステップの後にあなたは親コマンドで親ページに達することができます(親はウィンドウです)...

    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 + "");
    } 
0
chmod

次のコードは親ウィンドウの投稿を閉じるように更新します。

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
0
UJS