【问题标题】:Is there any way to make a page unable to refresh?有什么办法可以让页面无法刷新?
【发布时间】:2016-08-05 06:44:02
【问题描述】:

我有一个 HTML 页面,它让工人处于暂停时间,这将从他/她的日常工作中扣除。问题是如果他/她刷新时间,计时器会自动从头开始。我希望它继续正常流动。有什么办法可以让页面无法刷新?也欢迎其他类型的解决方案。提前谢谢你。

<script>
$(".example").TimeCircles({start: true,circle_bg_color: "#FFFFFF", time: { Days: {show: false}, Hours: {show: false}, Minutes: {show: true}}})
.addListener(
function(unit,value,total) { 
    if (total == 20) { 
        document.body.style.backgroundColor = "#FFD150";

    } else if (total == 10) { 
   document.body.style.backgroundColor = "#E84141";

    } else if (total == 0) { 
   document.body.style.backgroundColor = "#000000";
    } 
} 

);

addEventListener("click", function() {
var
  el = document.documentElement
, rfs =
       el.requestFullScreen
    || el.webkitRequestFullScreen
    || el.mozRequestFullScreen
;
rfs.call(el);

});

</script>

【问题讨论】:

  • 你的意思是不可能的哈哈?
  • 您可以使用计时器信息更新后端。因此,如果他们刷新页面,信息将已经存储,并且计时器不会刷新回 0。
  • window.onunload=function(){localStorage.old=counter;}; ... counter=+localStorage.old || 3600;
  • 可以在导航离开时禁用刷新和唠叨,但不能停止标签关闭...
  • @Dandavis 唠叨它,当然,但你不应该能够禁用刷新永远(如果你不能,你不应该这样做)。这是一个浏览器导航功能——应该是神圣的东西。

标签: javascript php html css refresh


【解决方案1】:

由于您使用的是 PHP,因此您可以使用 PHP $_SESSION 变量。 SESSION 变量存在于服务器上并且对于计算机是唯一的。 你也可以创建一个登录系统,它们可以是登录用户唯一的。

页面的开头是:

<?php
    session_start();

在任何其他 PHP 代码之前。我建议将它放在页面的最顶部,在 &lt;DOCTYPE&gt; 声明之前,在任何 PHP 包含之前,在 anything 之前。

这将使您能够访问 PHP $_SESSION 变量,因此您可以执行以下操作:

<?php
    session_start();
    //Lots more PHP code in between
    $dt = date("Y-m-d H:i:s"); 
    $_SESSION['break_begin'] = $dt;

用户可以刷新页面直到奶牛回家,时间保持不变。当他们点击一个按钮时,你可以告诉页面创建一个“break_end”变量:

    $_SESSION['break_end'] = date("Y-m-d H:i:s");

稍后,您可以将这两个值相减,然后从工作时间中减去暂停时间。 (参见下面的参考文献)

请注意,一旦页面被渲染,您就不能再运行任何 PHP 代码。解决这个问题的方法称为 AJAX,它非常简单。这是一个包含信息的 SO 答案,并包含指向简单示例的链接:

Prevent Page Load on Jquery Form Submit with None Display Button

在您的情况下,如果您想在网页上有两个按钮,则可能需要 AJAX:Begin Coffee BreakEnd Coffee Break单击它们不会运行任何 PHP,使用 javascript 存储时间会产生您在问题中描述的问题。 但是,单击按钮可以允许 javascript 使用 AJAX...并且 AJAX 可以运行一个 PHP 文件,设置(或读取)PHP $_SESSION 变量。

要考虑的另一件事是,如果您使用localstorage 或 js cookie,聪明的用户可能会更改您的数字。 PHP 变量安全地存在于服务器上。只有服务器端代码可以更改它们。

可能有用的参考资料:

Subtracting two dates in php

how to subtract two dates and times to get difference

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2022-01-12
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多