有啥方法可以捕获页面刷新并暂停它?
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 的第二条评论。以上是关于有啥方法可以捕获页面刷新并暂停它?的主要内容,如果未能解决你的问题,请参考以下文章