0

我需要区分用户驱动的使用 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 关闭和编程关闭,以便我可以进行一些后端操作

4

3 回答 3

1

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

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

您可以使用:

AjaxControlToolkit - ModalPopup

jQuery UI - 对话框

于 2012-10-11T10:14:21.333 回答
1

可能是这样的:

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() 并且仍然知道何时调用 close 函数或用户何时关闭弹出窗口。

于 2012-10-11T10:16:19.730 回答
1
// parent
function closePopup(win) {
    win.close();
    // do the magic stuff...
}


// popup (test.aspx)
function closeMe() {
    self.opener.closePopup(window);
}

更新
根据您的评论,只需检查closed弹出窗口的属性。如果是false,则弹窗仍处于打开状态,否则已关闭

if (win.closed === false) {
    win.close();
    // do magic stuff here
}
于 2012-10-11T10:25:56.210 回答