浏览器关闭事件确认。单击确定运行一些代码,自定义代码

时间:2012-08-10 15:34:43

标签: events browser

当用户关闭浏览器时,我想确认“你要退出吗?”。 如果是,我想运行一些注销代码并显示消息“你已注销”。如果不是,那就什么都不做。

以下是我正在使用的代码:

window.onbeforeunload = closeit; 

function closeit(e) {
    var closeEvent = false;
    if (event.clientY < 0)
        closeEvent = true;

    if ((closeEvent)) {


      var response = confirm("Are you sure you want to log-off?");

        if(response == true){
            var swf = "SWFAPP";
            var container;
            if (navigator.appName.indexOf("Microsoft") >= 0)
            {
                container = document;
            }
            else
            {
                container = window;
            }
            container[swf].logOutUser();
            alert("Logged off");
        }
        else{

        }

     }
 }

以上代码无效,无论是否单击“确定”或“取消”,都会关闭浏览器。如果单击确定,则不会抛出警告消息“已注销”。

如果我删除确认行并说响应始终为true,则会运行注销代码并显示消息“已注销”。 Container.logOutUser更新DB中的用户状态。

2 个答案:

答案 0 :(得分:0)

onbeforeunload事件没有clientY属性,因此closeEvent始终为false

必须设置事件的returnValue属性以防止页面卸载,但浏览器会通过提示用户来保留内部决策。另见:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

window.onbeforeunload = closeit; 

function closeit(e) {
    if (confirm("Are you sure you want to log-off?")) {
        var container;
        if (navigator.appName.indexOf("Microsoft") >= 0)
        {
            container = document;
        }
        else
        {
            container = window;
        }
        container[swf].logOutUser();
        alert("Logged off");
    }
    else{
        e.returnValue='Log-off cancelled.';
    }
}

答案 1 :(得分:0)

window.onbeforeunload = function (evt) { 
 evt = window.event;
alert(evt.clientY);