2010-11-24 40 views
10

ポップアップウィンドウを閉じると、ポップアップウィンドウにJavaScriptコードを追加せずに親ウィンドウをリフレッシュする方法はありますか?ポップアップウィンドウが閉じられたときに親ウィンドウをリフレッシュ

ユーザーが「開くポップアップ」をクリックしてポップアップウィンドウを開くことができるparent.phpというページがあります。私はポップアップウィンドウのページのマークアップに

window.onunload = function(){ 
    window.opener.location.reload(); 
}; 

のようなものを追加するために、このポップアップウィンドウには、いくつかのフラッシュ内容を示し、そのことはできません。

これを達成する他の方法はありますか?私はあなただけparent.phpし、これを追加することができると確信してい おかげ

+1

あなたは親ウィンドウからポップアップウィンドウのハンドルにONUNLOADハンドラを追加しようとしましたか? – Gordon

+0

@Gordon - 申し訳ありません – Kay

+0

は以下の通りです。 – Gordon

答えて

17

すべての主要なブラウザでは、この作業を行うためには、あなたがポップアップでunloadイベントハンドラを処理する必要があり、メインウィンドウで再読み込みを行います。メインウィンドウで、ポップアップで

function popUpClosed() { 
    window.location.reload(); 
} 

を追加します。

window.onunload = function() { 
    if (window.opener && !window.opener.closed) { 
     window.opener.popUpClosed(); 
    } 
}; 

使用すると、特定のIEには、すべてのブラウザで動作するようにあなたのコードが必要な場合は、だからあなたの質問への答えは、ノー一般的です。

+0

URLが保護されている場合https:「本当にデータを送信したい」というウィンドウを要求していないか再試行とキャンセルボタン? – changeme

6

var myPop = "pop up window selector" 
myPop.onunload = function(){ 
    location.reload(); 
}; 
+0

+1しかし、 var myPop = "ウィンドウのセレクタをポップアップして" var myPop = window.open();を使って例をより明確にする – Gordon

+0

申し訳ありませんが、私の頭の上のセレクタを考えることができませんでした!それを指摘してくれてありがとうゴードン – benhowdle89

+0

これはIEでは動作しません。私の答えは。 upvotingをやめてください。 –

1

には、親ウィンドウの終了ポップアップを検出するのに類似の問題がありました。理由は、document.domainプロパティを設定していないのは だと思います。

<script type="text/javascript"> 
     document.domain='<?=$_SERVER['SERVER_NAME']?>'; 
    </script> 

、代わりに私がポップアップで使用

window.onunload = function() { 
    if (window.opener && !window.opener.closed) { 
     window.opener.popUpClosed(); 
    } 
}; 

の:

どのような方法このような両方のウィンドウやポップアップためのdocument.domainプロパティを答えるティムダウンに追加

 <body onunload="window.opener.popUpClosed();"> 
2

Tim Downの方法の問題は、元の質問に答えることができないことです。要件は、できませんポップアップウィンドウにコードを追加することです。

私が見つけた解決策の1つは、特に優雅ではありませんが、私がテストしたすべてのブラウザで有効です。

新しく作成されたウィンドウオブジェクトをポーリングして、開いているかどうかを確認します。親ウィンドウで

var register; 
    var poll; 

    function isOpen(){ 
     if(register.closed){alert("Closed!"); clearInterval(poll);} 
    } 


    function create(){ 

     register = window.open("http://www.google.com","register","width=425,height=550"); 
     poll=setInterval("isOpen()",100); //Poll every 100 ms. 
} 
関連する問題