有啥方法可以捕获页面刷新并暂停它?

Posted

技术标签:

【中文标题】有啥方法可以捕获页面刷新并暂停它?【英文标题】:any way to catch a page-refresh and pause it?有什么方法可以捕获页面刷新并暂停它? 【发布时间】:2012-02-10 08:10:54 【问题描述】:

有什么方法可以使用 javascript、jquery 或其他方法来捕捉页面刷新并将其暂停一段时间?

这是必要的,以防止在一次重要的工作中意外按下刷新键,需要在页面刷新之前进行处理和保存。

在我之前在此论坛上发布的一个问题中,我不得不在讨论问题的某个时间点面对这个仍未解决的问题。我认为将其作为一个单独的问题发布是非常值得的。上述问题是here。编辑部分问题包含问题。

脚本语言是php。或者我应该使用任何其他语言来实现目标?

【问题讨论】:

【参考方案1】:

看来这可以通过 window.onbeforeunload() 来完成,例如 this example。

<script type="text/javascript">
   window.onbeforeunload = function() 
       return "You sure you want to leave? You will lose all your work!";
   
</script>

【讨论】:

假设用户,决定不离开页面。页面上之前计算的所有javascript变量值都会保留吗? 据我了解,它是“卸载前”,因此在用户确认他们确定要离开页面之前不会卸载任何内容。 技术后端可能有一些东西在用户不知情的情况下运行。这些任务需要在刷新时完成。如果用户选择刷新页面,如何捕捉并暂停刷新以便稍后释放。 那是不可能的。您可以尝试在 onunload 中触发 AJAX 请求,但不能延迟它 - 如果任何网站都可以这样做,这显然是一件坏事。【参考方案2】:

我认为没有办法停止或暂停页面刷新。是的,您可以发出警告,但为了安全起见,您只需在每次表单字段更改时使用 javascript 使用表单输入字段的当前状态填充用户的 cookie。用户按下单选按钮? Cookie 已更新。用户更新输入字段? Cookie 已更新。

然后,在页面加载时,只需让 php 或 javascript 读取 cookie 并填写表单。

【讨论】:

没有ajax?如果是ajax,那么我在上一篇文章中的问题仍然存在 Ajax 或 cookie,由您选择。我在这些方法中没有任何主要缺点,除非您拥有极高负载的网站,人们每天会以未完成的形式离开页面数千次:)【参考方案3】:

我认为你应该使用:

<body onbeforeunload="return 'are you sure you want to move away from this page?';">

【讨论】:

去掉confirm(),只返回提示信息。但是,在最近的 Firefox 版本中,只会显示一般消息。 @Kariem Soudy,请参阅我对纤毛病的第二条评论。 @ThiefMaster,请参阅我对 cilosis 的第二条评论。

以上是关于有啥方法可以捕获页面刷新并暂停它?的主要内容,如果未能解决你的问题,请参考以下文章

在页面上按F5刷新和在浏览器地址栏里按回车有啥区别?

ctrlf+F5与F5刷新有啥区别!

CTRL+F5 和F5 两种刷新有啥区别?

iframe 和ajax局部刷新的区别

保存变量值并在页面刷新后检索它[重复]

JS弹窗提交关闭后,刷新父页面 在线等 急!!!