1

この子ウィンドウと、変数「myStatus」が「処理」に等しい状態でウィンドウがまだ開いているときに「送信」が再度クリックされた場合、ウィンドウのリロードを防止する条件があります。問題は、子ウィンドウが開いてから親ページが更新され、「送信」が再度クリックされた場合、childPage 変数が失われ、子ページが再読み込みされることです。この問題を回避する方法はありますか?ありがとう。

var childPage = null;

$('#send').click(function(){

    if(childPage && !childPage.closed && childPage.myStatus == "processing"){
      alert('child window is open and processing');
    }else{
     childPage = window.open("test.html","send","width = 300,height=300");
}):
4

1 に答える 1

3

私は同じ問題を抱えていた

双方向通信で解決しました

ユーザーが親ページを更新すると、この情報が子ウィンドウに送信されます。子ウィンドウは、親ページがリロードされるかどうかをチェックし続けるタイマーを実行します。親ページがリロードされると、親に子ウィンドウの参照が作成されます

コード:

親ウィンドウで

 window.onbeforeunload =function (){
  childPage.reconnect();
}

window.saveChildReference =function (ref){
  childPage = ref;
}

子ウィンドウで

window.reconnect = function(){
     var i =0;
   var timer = setInterval(function(){
    i++;
        if(window.opener && window.opener.saveChildReference ){
               window.opener.saveChildReference(window);
             clearTimeout(timer );
         }

        if(i > 100){
         clearTimeout(timer );// stop trying as parent may be closed.
      }

   }, 100);

};
于 2013-02-28T19:11:37.870 に答える