【问题标题】:Popup Window will not Close弹出窗口不会关闭
【发布时间】:2010-07-22 18:24:12
【问题描述】:

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

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


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

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

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

【问题讨论】:

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


    【解决方案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 不再与变量发生冲突。我建议查看http://www.infimum.dk/HTML/JSwindows.html,以更深入地了解使用 javascript 进行窗口操作。

    在这种情况下,我还建议逐行测试并执行诸如抛出警报之类的操作,即在 if PopupWnd != Null 之后发出警报以查看它是否甚至到达该部分。见鬼,在 HidePopup 函数的开头做一个警报,看看 PopupWnd 的值是什么......

    【讨论】:

    • 感谢您的建议。没有运气。请阅读我的(新)附加说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多