如何防止刷新页面

问题描述:

我需要在javascript/jquery中捕获刷新事件。我的整个页面由ajax加载,我的意思是我的页面上的所有链接和所有表单都是由ajax请求发送的。现在,当用户刷新我的页面时,这个刷新事件使我的ajax请求实现了我想要实现的所有功能,所以我真的需要捕获用户刷新调用并停止它们,然后将这个刷新事件转发为ajax调用。如何防止刷新页面

这可能吗?我不想赶上F5按键 - 这是不够的。

Demo Fiddle

<script type="text/javascript"> 
     window.onbeforeunload = function() { 
      return "are you sure to leave this page"; 
     } 
    </script> 
+1

+1,请注意,在离开页面(链接,后退/前进等)的任何情况下,这当然会出现,但您可以添加自己的方式,至少关闭正常链接,等等 – 2013-04-09 15:11:53

不可能阻止每种形式的刷新。了解HTML5 pushState,以便用户可以轻松刷新和使用后退/前进按钮。

不幸的是,HTML5历史API是不一致的越野车,除了它是在所有的HTML5浏览器+不兼容HTML4浏览器不同的方式实现。幸运的是,History.js为HTML5浏览器提供了交叉兼容性(确保所有HTML5浏览器按预期工作),并可选地为HTML4浏览器提供散列回退(包括对数据,标题, pushState和replaceState功能)。