JavaScript实现POP窗体的onclose功能

来源:互联网 发布:菲律宾网络娱乐牌号 编辑:程序博客网 时间:2024/05/22 22:00

问题描述:

    弹出窗体上有三个按键分别为保存,关闭和右上角IE自带的关闭按键。

    点击保存按键,将窗体的内容在数据库中Update为保存的状态,关闭本窗体。

    点击关闭按键,在数据库中删除窗体表示的记录,关闭本窗体。

    点击IE自带的关闭按键,在数据库中删除窗体表示的记录,关闭本窗体。

前两个功能很好实现,我用的是分别提交到不同的Action,然后进行处理,根据处理的结果来确定是关闭本窗体还是提示错误信息。第三个功能不太好实现,因为那个关闭按键是IE自带的,对怎么捕捉这个事件我不太清楚。记得在用Delphi开发时,窗体有个onclose事件,可以在这个事件中添加功能。那么HTML是不是有类似的情况呢?

    查了一下资料,发现了<body>标签里有两个事件,onunloadonbeforeunload。呵呵,方法有了。

解决思路:

    设置全局变量,来确定是点击了哪个按钮,因为最后都要关闭窗体,所以编写一个函数,统一对窗体的关闭进行处理。该处理过程是首先首先根据全局变量判断点击了哪个按键,然后进行相应的处理。最后在bodyonunload或者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();">