javascript 上的 localStorage 带来刷新

2024-02-18

我试图在空闲时关闭用户,在选项卡之间使用 javascript,下面的代码对于单个选项卡工作正常,对于多个选项卡它无法正常工作

例如:我设置了 10 秒作为空闲时间,并离开了第一个选项卡,它会在 10 秒内将用户抛出,假设我在以下位置打开了第一个选项卡00:00:05小时并打开第二个选项卡00:00:10小时并在第二个选项卡上工作00:00:13小时并留下项目必须注销的两个选项卡00:00:23正确的?但它注销了00:00:15,我不知道这里发生了什么,如果它没有正确刷新,当我使用它时它怎么会长时间停留在第二个选项卡上?如果刷新正确,它如何根据第一个打开的选项卡将我注销,代码如下。

<script>
var IDLE_TIMEOUT = 10; //seconds
localStorage.setItem("setTimeOut", "0");

document.onclick = function () {    
    localStorage.setItem("setTimeOut", "0");
};

document.onmousemove = function () {   
    localStorage.setItem("setTimeOut", "0");
};

document.onkeypress = function () {  
    localStorage.setItem("setTimeOut", "0");
};

document.onfocus = function () {  
    localStorage.setItem("setTimeOut", "0");
};


window.setInterval(CheckIdleTime, 1000);
function CheckIdleTime() {  
    localStorage.setItem("setTimeOut", parseInt(localStorage.getItem("setTimeOut"))+1);
    if (localStorage.getItem("setTimeOut") >= IDLE_TIMEOUT) {
        alert('Times up!, You are idle for about 15 minutes, Please login to continue');
        document.location.href = "logout.php";
    }
}
</script>

不要在每个选项卡上每秒增加该值,这意味着每秒都会随着打开的选项卡数量而不是 1 秒而增加,只需设置交互的当前时间,然后每秒进行比较。

因此,在您的事件处理程序中,请执行以下操作:

localStorage.setItem("lastInteraction", Date.now())

...然后在你的CheckIdleTime()功能,删除localStorage.setItem()并改变你的if对此的条件:

Number(localStorage.getItem("lastInteraction")) + (IDLE_TIMEOUT * 1000) < Date.now()

该条件获取最后一次交互发生的时间,添加超时常量,然后检查当前时间(现在)是否已经超过该值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 上的 localStorage 带来刷新 的相关文章

随机推荐

  • EMR 与 AWS 上的 EC2/Hadoop

    我知道 EC2 比 EMR 更灵活 但工作量更大 然而就成本而言 如果使用 EC2 可能需要将 EBS 卷附加到 EC2 实例 而 AWS 只是从 S3 流入数据 因此 在 AWS 计算器上计算数字 即使对于 EMR 也必须为 EC2 付费
  • git 从合并中删除提交

    我有以下问题 我试图将远程分支合并到本地 然后将更改推送到存储库 好吧 我获取了具有三个提交的远程分支 但其中一个尚未完成 所以我不想推送一个这些提交到存储库 当我运行 git log 时 它向我显示以下内容 commit A1 merge
  • 是否可以在 MVC 5 控制器中的一项操作上禁用身份验证过滤器?

    AuthenticateUser public class HomeController Controller GET Home public ActionResult Index return View AllowAnonymous pu
  • Keras 中的反向传播?

    谁能告诉我 Keras 中的反向传播是如何完成的 我读到它在 Torch 中非常简单 在 Caffe 中很复杂 但我找不到任何关于使用 Keras 执行此操作的信息 我正在 Keras 中实现我自己的层 非常初学者 并且想知道如何进行反向传
  • C# 可序列化类到 xsd

    有没有办法从可序列化的 C 类输出 xml 模式 xsd 我浏览过网络 但不确定我是否在寻找正确的东西 Thanks 您正在寻找 XSD exehttp msdn microsoft com en us library x6c1kb0s a
  • Play Protect 无法识别该应用程序的开发者

    我尝试在 Google Play 以外的市场中发布我的应用程序 当我尝试安装我的应用程序时 它说 Play Protect 无法识别该应用程序的开发者 来自未知开发者的应用程序有时可能不安全 我认为问题可能出在应用程序的标志上 我通过另一个
  • IntelliJ 无法将爆炸战争部署到 tomcat

    我有一个 Java Web 应用程序 正在 IntelliJ 中开发并使用 Apache Tomcat 进行部署 我定义了一些在团队中的每个人之间共享的运行配置 这些运行配置被定义为将分解的战争工件部署到本地 tomcat 中 其他团队成员
  • 如何从检测意图 API 触发对话流事件?

    如何从 python 检测意图 API 触发对话流中的事件 我想在启动聊天窗口时立即触发欢迎意图 您需要将 WELCOME 事件作为查询输入的一部分发送到调用detect intent 它可能看起来像这样 import dialogflow
  • 在应用程序购买沙箱中不提示我输入登录/密码

    我们正在开发一款应用程序 当然 用于应用程序购买 IAP 我已完成指南中启用 iap 的所有操作 一切正常 直到我想购买 一些代码 MainViewController m void viewDidLoad if SKPaymentQueu
  • 将 JTable 放入 JTree 中

    与螺纹有关Jtable 作为 Jtree 节点 https stackoverflow com questions 8839025 jtable as a jtree node我把 JTable 放到 JTree 中 但是JTree视图在启
  • 无法解析缺少分钟的日期?

    我正在尝试解析不包含分钟 2019 10 12T07Z 的日期时间字符串 import java time OffsetDateTime import java time format DateTimeFormatter public cl
  • 从触发器下载delphi中的文件并捕获文件名

    我有一个网站的网址 它看起来像这样 http www example com downloads file 4789 download http www example com downloads file 4789 download 我想
  • shouldOverrideUrlLoading 仅在某些网页上被调用

    我正在为针对多个客户端进行个性化的应用程序使用 shouldOverrideUrlLoading 方法 每个客户端都有自己的网页想要加载到 webview 中 我的问题是这样的 该应用程序非常适合客户 A 及其网页 但不适用于客户 B 的网
  • django-admin startproject尝试创建manage.py两次?

    我正在努力解决Django 教程 https docs djangoproject com en 1 9 intro tutorial01 版本 1 9 在 Ubuntu 15 10 上运行 当我到达跑步的台阶时django admin s
  • Express.js 无法 GET /index.html.var

    所以我在共享主机 FastComet 中运行一个快速应用程序 但如果我想访问 我会收到此消息 无法获取 index html var 显然这与 htaccess file 我解决这个问题的方法是添加 DirectoryIndex disab
  • 删除 iOS 7 中的 Tab Bar 水平分隔符

    我想删除 UITabBar 和屏幕其余部分之间的水平分隔线 我问和这个人有同样的问题 https stackoverflow com q 11104796 1224741但针对 iOS7 进行了更新 设置我的 UITabBar 的背景图像并
  • 使用mockito库模拟java中的final类[重复]

    这个问题在这里已经有答案了 我有一个最终类 它有一个我想执行特定操作的方法 因此我想创建最终类的对象 但我无法创建它 以下是我的课程 public final class A private String name A String nam
  • 在 Emacs 中搜索标记(选定)文本

    我使用 emacs 查看和编辑代码和其他文本文件 我想知道是否有一种方法可以向前或向后搜索当前缓冲区中标记的文本 类似于我在记事本或写字板中可以执行的操作 就像我可以在缓冲区中标记一些文本并执行 C s 或 C r 并能够使用标记的文本进行
  • 无法在画布上绘制垂直虚线

    我正在使用以下 javascript 算法在画布上绘制虚线 该算法正确绘制水平线 但无法绘制垂直线 g dashedLine function x y x2 y2 dashArray this beginPath this lineWidt
  • javascript 上的 localStorage 带来刷新

    我试图在空闲时关闭用户 在选项卡之间使用 javascript 下面的代码对于单个选项卡工作正常 对于多个选项卡它无法正常工作 例如 我设置了 10 秒作为空闲时间 并离开了第一个选项卡 它会在 10 秒内将用户抛出 假设我在以下位置打开了