捕获window.onbeforeunload的结果

时间:2014-05-07 15:56:44

标签: javascript jquery javascript-events

我有一个场景,当用户在window.onbeforeunload上单击是时我必须保存更改,因为我需要提交表单,当选择no时不会发生任何事情。

任何帮助都非常感谢

我试过这个

window.onbeforeunload= function(){
    var r = confirm("Are you sure you want to leave this page?");
    if (r == true) {
        readForm.action = '/SREPS/read.do' ;
        readForm.submit();
    }else{
        return false;
    }
}

当我们在窗口期间点击取消时,它没有100%工作。确认另一个对话框显示来自网页的消息错误要求确认离开此页面并留在此页面上。在这种情况下,如果用户选择离开此页面。我无法提交表格。

1 个答案:

答案 0 :(得分:3)

无法onbeforeunload中使用您自己的对话框。你唯一能做的就是返回一个要显示的字符串(在某些浏览器上)。您无法阻止浏览器离开,只有用户可以控制它。

您可以做的是:

window.onbeforeunload = function(){
    return 'Are you sure you want to leave this page?';
};

这将询问用户是否要离开。然后你可以使用onunload事件在他们离开时运行一个函数。从那里,你可以做一个"同步" AJAX请求提交表单。

window.onunload = function(){
    var request = new XMLHttpRequest();
    request.open('POST', '/SREPS/read.do', false);
    request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

    request.send(new FormData(readForm));
};

如果您使用的是jQuery,则可以执行以下操作:

window.onunload = function(){
    $.ajax({
        url: '/SREPS/read.do',
        type: 'post',
        async: false,
        data: $(readForm).serialize()
    });
};