1

我已经四处寻找了一段时间,但还没有完全找到我一直在寻找的东西。我的网页存储报告,用户可以保存这些报告。

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

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

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

欢迎任何建议。

问候,拜伦·科布。

4

2 回答 2

2

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

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

这样,您应该能够将一些数据传输到您的服务器,而浏览器会阻止卸载。这有一些缺点。最明显的是,根据要传输的数据量和需要多长时间,用户体验可能不是很好。
另一个是此方法在某些(较旧的)浏览器中不可用。

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

于 2010-10-19T09:34:42.693 回答
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;}
于 2011-11-17T04:09:10.050 回答