0


0

ポップアップウィンドウが閉じない

エラーページからポップアップウィンドウを閉じたい。 プロセスは以下のとおりです。

  1. フォームを送信する

  2. フォームの送信時に、ポップアップウィンドウが開くのを見る

  3. フォームの送信後にエラーがスローされた場合、ページを表示します ポップアップ)エラーページにリダイレクト

この時点で、ポップアップウィンドウが閉じます。

ポップアップウィンドウを開いてフォームを送信するタイミングを考えると、エラーがスローされるかどうかを確認してからポップアップウィンドウを開くかどうかを決定する簡単な方法はありません。 私がプログラミングしている特定のエラーは、ポップアップウィンドウを開いた後にスローされるため、エラーページからポップアップウィンドウを閉じる必要があると思います。 手順は適切に設定されているため、現在のアーキテクチャのソリューションを探しています。

エラーページで、ポップアップウィンドウを開く機能を含む同じスクリプトファイルから関数を呼び出してみました。 関連するコードは次のとおりです。

var PopupWnd = null;
function ShowPopup(){
 PopupWnd = window.open('Popup.aspx','PopupWnd','');
}
function HidePopup(){
 if(PopupWnd != null){
  if(!PopupWnd.closed){
   PopupWnd.close();
  }
 }
}

HidePopup()関数から、ShowPopup()関数が以前に実行された場合、PopupWndオブジェクトはnullに等しくないはずではありませんか? スコーピングの問題またはイベントのタイミングに関連していますか? HidePopup()関数でポップアップウィンドウを閉じたいときにnullに等しくないようにPopupWndオブジェクトの値を永続化するにはどうすればよいですか?

助けてくれてありがとう。

 +
*追加情報:* +名前に衝突がないことを確認した後、エラーaspxページの背後にあるコードのPage_LoadイベントからHidePopup関数を呼び出していることが重要かどうか疑問に思っています。 コードは次のとおりです。
string script = "HidePopup();";
ClientScript.RegisterClientScriptBlock(GetType(), "UploadErrorScript", script);

健全性チェックのために、コードビハインドからHidePopup関数が呼び出され、この関数内でPopupWndオブジェクトがnullに設定されていることを確認するためにアラートを入力しました。

1 Answer


1


名前に衝突がある可能性があります。 変数PopupWndとウィンドウの名前PopupWndがあります。

var PopupWnd = null; function
ShowPopup(){
     PopupWnd = window.open('Popup.aspx','PopupWindow','');
}
function HidePopup(){
    if(PopupWnd != null){
        if(!PopupWnd.closed){
            PopupWnd.close();
        }
    }
 }

WindowNameが変数と衝突しなくなるため、これは機能するはずです。 JavaScriptを使用したウィンドウ操作の詳細については、http://www.infimum.dk/HTML/JSwindows.htmlを確認することをお勧めします。

このようなケースでは、ラインごとのテストや、アラートのスローなどのことも行うことをお勧めします。 PopupWnd!= Nullの場合はアラートを実行して、その部分に到達するかどうかを確認します。 地獄、HidePopup関数の最初にアラートを出して、PopupWndの値を確認してください…​