如何停止卸载页面?

use*_*312 4 javascript jquery

我有一个页面,用户需要输入一些数据并单击保存以验证更改,但我的问题是,如果用户正在尝试关闭浏览器窗口或单击其他链接以导航到不同的页面..我需要删除用户目前已保存的所有条目..我是按照以下方式进行的

window.onbeforeunload = function() 
{
 if(confirm('Are you sure you want to navigate'))
  {
    //Invoke `enter code here`server side method
  }
 else
 {
   // return false;
 }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,如果他点击是,当他点击"否"时出现问题.即使他点击No ..页面卸载方法被调用,它被重定向到另一个页面..但我想要它在同一个州停留在同一页面......你能帮我实现这个目标吗?

谢谢,感谢您的回复......

Roc*_*mat 7

您无法阻止用户离开页面.你可以做的是向他们发出信息,询问他们是否想要离开.

window.onbeforeunload事件应返回一个字符串(并且只返回一个字符串).该字符串将打印在浏览器发出的警告框中.

您不能使用自己的警报框,也不能阻止用户离开(或重定向它们).

window.onbeforeunload = function(){
    return 'Are you sure you want to leave?';
};
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery

$(window).on('beforeunload', function(){
    return 'Are you sure you want to leave?';
});
Run Code Online (Sandbox Code Playgroud)

当用户离开页面时,您可以使用该onunload事件进行AJAX调用(您可能需要在async: false此处使用).

例:

$(window).unload(function(){
    $.ajax({
        url: '/path/to/page/',
        async: false, // this may be needed to make sure the browser doesn't
                      // unload before this is done
        success: function(){
          // Do something
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

注意:为什么不在用户完成时保存所有内容,而不是这样做?如果用户没有完成,而不是保存它然后删除它?