弹出窗口不会关闭

时间:2010-07-22 18:24:12

标签: c# javascript asp.net javascript-events

我想从错误页面关闭弹出窗口。这个过程是:

  1. 提交表格
  2. 在表单提交时,请打开一个弹出窗口
  3. 如果在表单提交后抛出错误,则查看页面(而不是弹出窗口)重定向到错误页面
  4. 此时,弹出窗口应该关闭。

    考虑到弹出窗口打开的时间和表单的提交,没有一种简单的方法可以等待并查看是否抛出错误然后决定是否打开弹出窗口。在打开弹出窗口后抛出我正在编程的特定错误,所以我相信应该从错误页面关闭弹出窗口。这些步骤已经到位,所以我正在寻找当前架构的解决方案。

    在错误页面上,我尝试从同一个脚本文件中调用一个函数,该文件包含负责打开弹出窗口的函数。相关代码是:

    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()函数中的弹出窗口时,如何使PopupWnd对象值保持不变以使其不等于null?

    感谢您的帮助。


    附加说明:
    在确认名称中没有冲突之后,我想知道我是否正在从错误的aspx页面后面的代码的Page_Load事件中调用HidePopup函数。代码是:

    string script = "<script>HidePopup();</script>";
    ClientScript.RegisterClientScriptBlock(GetType(), "UploadErrorScript", script);
    

    为了进行健全性检查,我输入了警报,以确保从我的代码隐藏中调用HidePopup函数,并且PopupWnd对象在此函数中仍设置为null。

1 个答案:

答案 0 :(得分: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的价值是什么......