问题描述:
弹出窗体上有三个按键分别为保存,关闭和右上角IE自带的关闭按键。
点击保存按键,将窗体的内容在数据库中Update为保存的状态,关闭本窗体。
点击关闭按键,在数据库中删除窗体表示的记录,关闭本窗体。
点击IE自带的关闭按键,在数据库中删除窗体表示的记录,关闭本窗体。
前两个功能很好实现,我用的是分别提交到不同的Action,然后进行处理,根据处理的结果来确定是关闭本窗体还是提示错误信息。第三个功能不太好实现,因为那个关闭按键是IE自带的,对怎么捕捉这个事件我不太清楚。记得在用Delphi开发时,窗体有个onclose事件,可以在这个事件中添加功能。那么HTML是不是有类似的情况呢?
查了一下资料,发现了<body>标签里有两个事件,onunload和onbeforeunload。呵呵,方法有了。
解决思路:
设置全局变量,来确定是点击了哪个按钮,因为最后都要关闭窗体,所以编写一个函数,统一对窗体的关闭进行处理。该处理过程是首先首先根据全局变量判断点击了哪个按键,然后进行相应的处理。最后在body的onunload或者onbeforeunload中调用这个函数。
代码摘要:
//全局变量
var btn_flg = 0;
//点击关闭按键
function fun_close(){
btn_flg = 0;
window.close();
}
//点击保存按键
function fun_save_message(){
btn_flg = 1;
window.close();
}
//
function fun_on_unload(){
//点击×和关闭按键
if (btn_flg == 0){
document.frm.action='del_invite_receiver.php';
document.frm.submit();
window.opener.location.reload();
}
//点击保存按键
if (btn_flg == 1){
document.frm.action='save_invite_receiver.php';
document.frm.submit();
window.opener.location.reload();
}
}
最后在<body>标签中添加上边的函数:
<body onbeforeunload="fun_on_unload();">