使用javascript识别弹出窗口的X关闭事件
我需要区分使用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
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()
。我以编程方式从父窗口关闭窗口:(