【问题标题】:any way to catch a page-refresh and pause it?有什么方法可以捕获页面刷新并暂停它?
【发布时间】:2023-03-12 03:48:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php javascript jquery


    【解决方案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 的第二条评论。
    猜你喜欢
    • 2016-08-05
    • 2022-01-12
    • 2013-10-30
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 2020-10-02
    • 2022-09-23
    相关资源
    最近更新 更多