【发布时间】:2016-03-23 23:36:55
【问题描述】:
如何清除浏览器中另一个tab中设置的timeout?
我尝试在localStorage 中存储超时参考,但无法清除timeout
function setIdleTimeout() {
var idleTimeout = setTimeout(function() {
//autologout
}, 20000);
localStorage.setItem('idleTimeout', idleTimeout);
}
function clearIdleTimeout() {
var idleTimeout = localStorage.getItem('idleTimeout');
clearTimeout(idleTimeout);
localStorage.setItem('idleTimeout', idleTimeout);
}
如果我在第二个选项卡中调用clearIdleTimeout(),它不会清除previous tab 中设置的timeout
【问题讨论】:
-
除非两个标签都来自同一个域,并且你有一个从一个到另一个的链接(通过
window.opener或类似的东西),否则你不能这样做。计时器标识符只是数字,每个窗口都有一个隐式命名空间。 -
两个选项卡都在同一个域上,如果用户空闲,我正在实现自动注销功能,但不希望第一个选项卡注销用户,因为他正在处理第二个选项卡
-
idleTimeout似乎是一个字符串,而不是一个变量 -
@guest271314 没有关注你:-/
-
或者通过在 localStorage 中使用监听器,该位被翻转。有办法做到这一点,但它需要代码,但 OP 想要做到的方式不会发生。
标签: javascript browser timeout settimeout cleartimeout