2

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

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

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{

        }

     }
 }

上面的代码不起作用,无论我单击“确定”还是“取消”,它都会关闭浏览器。如果单击“确定”,则它不会抛出警报消息“已注销”。

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

4

2 回答 2

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.';
    }
}
于 2012-08-10T17:17:25.660 回答
0
window.onbeforeunload = function (evt) { 
 evt = window.event;
alert(evt.clientY);
于 2013-03-26T07:47:02.627 回答