gpt4 book ai didi

javascript - 如何从一个或多个选项卡重置一个变量的值?

转载 作者:行者123 更新时间:2023-12-03 07:49:03 26 4
gpt4 key购买 nike

我有两个选项卡。一个是 home 选项卡,另一个是 home-1 选项卡。在这里我跟踪登录到注销时间的时间计数。我在一个 java 脚本文件中有以下代码。这作为两个实例工作。

home 选项卡 -> www.example.com/home//(我的 java 脚本文件包含此目录)第一个实例。

home-1 选项卡 -> www.example.com/home-1//(所需的脚本文件包含从主页选项卡到此选项卡中)第二个实例。

任何键/鼠标事件都会重置计数器。

var sestmout=0;
var idletm=60*1;
var idletmcntr=0;
var idletimeout=null;
var lastUpdate1 = new Object();
var lastUpdate = 0;
var curdttm = new Date();

$(document).ready(function(){
initidletm();
});

lastUpdate1.cntr = idletmcntr;
lastUpdate1.ctme = curdttm.getMilliseconds();
lastUpdate1.time = curdttm.getTime();

function reset_cnt(){
if(idletmcntr != 0){
curdttm = new Date();
lastUpdate1.cntr = idletmcntr;
lastUpdate1.ctme = curdttm.getMilliseconds();
lastUpdate1.time = curdttm.getTime();
var a = moment();
lastUpdate1.utme = a.valueOf();
}
idletmcntr=0;
}

document.onclick=function(){
reset_cnt();

};
document.onmousemove=function(){
reset_cnt();
};
document.onkeypress=function() {
reset_cnt();
};

在每个选项卡中,我在 java 脚本文件中包含以上行。现在,我在 home 选项卡上触发鼠标/按键事件,重置 home-1 选项卡中的计数器值。

使用此代码。

function initidletm(){
if(window.name == "home-1"){
window.opener.document.onkeypress = document.onkeypress;
window.opener.document.onclick = document.onclick;
window.opener.document.onmousemove = document.onmousemove;

}else if(window.name == "home-2"){
window.opener.document.onkeypress = document.onkeypress;
window.opener.document.onclick = document.onclick;
window.opener.document.onmousemove = document.onmousemove;
}
else{ // home tab
document.onkeypress=function() {
reset_cnt();
};
document.onclick=function() {
reset_cnt();
};
document.onmousemove=function() {
reset_cnt();
};

}
}
clearTimeout(idletimeout);
idletimeout=setTimeout(trackidletm,1000);

function trackidletm() {
initidletm();
}

这种写法还是错误的。只有 home 选项卡将计数器值重置为 home-1 和其他选项卡。其他选项卡(如 home-1 选项卡)不会重置主页选项卡和其他选项卡。什么原因?以及如何从工作选项卡重置其他选项卡计数器值?

最佳答案

您可以编写一个功能,当您执行某些操作时,它会在 HTML5 localStorage 中存储一个值。

if (typeof(Storage) !== "undefined") {
localStorage.setItem("reset", "true");
}

如果您不执行任何操作,它会将其设置为 false。

localStorage.setItem("reset", "false");

您可以像这样检查这些值:

localStorage.getItem("reset");

因此,当您拥有同一域的不同选项卡时,您可以检查并查看是否在另一个选项卡中执行了任何操作。

引用号:http://www.w3schools.com/html/html5_webstorage.asp

希望有帮助。

关于javascript - 如何从一个或多个选项卡重置一个变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com