有什么方法可以使页面无法刷新吗


Is there any way to make a page unable to refresh?

我有一个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>

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

页面开头:

<?php
    session_start();

在任何其他PHP代码之前。我建议将它放在页面的最顶部,在<DOCTYPE>声明之前,在任何PHP包含之前,在任何内容之前

这将允许您访问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答案,它包含信息,并包含到简单示例的链接:

使用无显示按钮防止Jquery表单提交页面加载

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

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

可能有用的参考资料:

在php 中减去两个日期

如何减去两个日期和时间以获得差异