使用javascript识别弹出窗口的X关闭事件

使用javascript识别弹出窗口的X关闭事件,javascript,asp.net,c#-4.0,jquery,window,Javascript,Asp.net,C# 4.0,Jquery,Window,我需要区分使用X关闭按钮的用户驱动的弹出窗口关闭和通过代码关闭 var win= window.showModelessDialog("http://localhost/test/test.aspx",'google,....); //Some manipulations //Manipulation ends if(win!=null && win.open) { win.close(); } 现在我可以完全访问test.aspx和test.aspx

我需要区分使用X关闭按钮的用户驱动的弹出窗口关闭和通过代码关闭

var win= window.showModelessDialog("http://localhost/test/test.aspx",'google,....);
//Some manipulations            
//Manipulation ends
if(win!=null && win.open)
{
 win.close();
}

现在我可以完全访问test.aspx和test.aspx.cs。我在test.aspx页面中定义了一个onbeforeunload方法,该方法将通过关闭窗口(X关闭或执行代码)的方式调用我基本上想区分我的X关闭和编程关闭,以便我可以进行一些后端操作

使用模型弹出窗口&包括“确定”和“取消”按钮

现在您可以处理“确定”和“取消”按钮事件

您可以使用:


使用模型弹出窗口&包括“确定”和“取消”按钮

现在您可以处理“确定”和“取消”按钮事件

您可以使用:


可能是这样的:

var MyPopup = {

  _win : null,

  _userClosingWindow : true,

  open : function() {
    var _this = this;
    this._win = window.open(...);
    this._win.onbeforeunload = function() {
      if( _this._userClosingWindow ) {
         // closed by user
      }
      else {
        // closed in code
      }
    };
  },

  close : function() {
    this._userClosingWindow = false;
    this._win.close();
  }

};

然后,您可以使用MyPopup.open()和MyPopup.close(),并且仍然知道何时调用关闭函数或何时用户关闭弹出窗口。

类似的内容可能是:

var MyPopup = {

  _win : null,

  _userClosingWindow : true,

  open : function() {
    var _this = this;
    this._win = window.open(...);
    this._win.onbeforeunload = function() {
      if( _this._userClosingWindow ) {
         // closed by user
      }
      else {
        // closed in code
      }
    };
  },

  close : function() {
    this._userClosingWindow = false;
    this._win.close();
  }

};
然后,您可以使用MyPopup.open()和MyPopup.close(),并且仍然知道何时调用关闭函数或何时用户关闭弹出窗口。

//parent
功能关闭弹出窗口(win){
win.close();
//做些神奇的事情。。。
}
//弹出窗口(test.aspx)
函数closeMe(){
自动开启器关闭弹出窗口(窗口);
}
更新
对于您的评论,只需检查弹出窗口的
closed
属性即可。如果为
false
,则弹出窗口仍然打开,否则它已经关闭

if (win.closed === false) {
    win.close();
    // do magic stuff here
}
//父对象
功能关闭弹出窗口(win){
win.close();
//做些神奇的事情。。。
}
//弹出窗口(test.aspx)
函数closeMe(){
自动开启器关闭弹出窗口(窗口);
}
更新
对于您的评论,只需检查弹出窗口的
closed
属性即可。如果为
false
,则弹出窗口仍然打开,否则它已经关闭

if (win.closed === false) {
    win.close();
    // do magic stuff here
}

将尝试此操作并更新您。如果它有效,将标记为正确答案概念有效,但我不确定代码是否100%正确。此。_win.onbeforeunload=function(){未触发:(好的,那么你的代码中有一些错误。请看一下。正如你所看到的,这个概念工作得很好。我将尝试这个并更新你。如果它工作的话,我会将它标记为正确答案。这个概念工作的话,但是我不确定代码是否100%正确。这个。_win.onbeforeuload=function(){没有触发:(好吧,那么您的代码中有一些错误。请看一下。正如您所看到的,这个概念工作得很好。closeMe在卸载前调用?当弹出窗口以编程方式关闭时,请调用
closeMe()
,而不是
test.aspx中的
window.close()
。我以编程方式从父窗口关闭窗口:(在卸载前调用closeMe?以编程方式关闭弹出窗口时,调用
closeMe()
,而不是
test.aspx中的
window.close()
。我以编程方式从父窗口关闭窗口:(