确认浏览器退出/开启浏览器退出技术

时间:2010-10-19 09:28:07

标签: javascript jquery onunload browser-close

我一直在四处寻找并且还没找到我一直在寻找的东西。 我的网页存储报告,用户可以保存这些报告。

我正在寻找一种方法,使用jquery或javascript onunload / onbeforeunload来询问用户是否希望保存报告,或者在浏览器关闭/导航时不继续保存。

使用onbeforeunload我可以让用户能够停止导航并手动保存,但我宁愿通过对话框完成保存。 onbeforeunload的另一个问题是点击标签也会调用onbeforeunload方法。

保存是异步的,需要几毫秒。

欢迎任何建议。

此致 Byron Cobb。

2 个答案:

答案 0 :(得分:2)

这可能是syncronized Ajax调用合理的唯一时间。

window.onbeforeunload = function(){
   $.ajax({
      url:      'somewhere',
      type:     'POST',
      dataType: 'text',
      async:    false,
      data:     'you_data_here',
      success:  function(data){
      }
   });
};

这样你就可以将一些数据传输到服务器,而浏览器会阻止卸载。这有一些缺点。最明显的是,它可能不是那么棒的用户体验,这取决于要传输多少数据以及需要多长时间 另一个原因是这种方法在某些(较旧的)浏览器中不可用。

一个好的选择可能是不时或在每次行动后自动保存您的数据。

答案 1 :(得分:2)

      $(document).ready(function() {
             //below turns off popup on a tags, buttons, :input is for a submit in ie and img tags
             $("a").click(RemoveUnload);
             $("button").click(RemoveUnload);
             $(":input").click(RemoveUnload);
             $("img").click(RemoveUnload);
         });

       RemoveUnload(){window.onbeforeunload = null;}