ClearTimeout在另一个选项卡中设置 [英] ClearTimeout set in another tab

查看:148
本文介绍了ClearTimeout在另一个选项卡中设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何清除暂停已在浏览器中的另一个设置页设置?

How can I clear timeout that has been set in another tab in browser?

我试图通过的localStorage 存储超时的参考,但不能清除暂停

I tried by storing timeout reference in localStorage, but could not clear 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()在第二个选项卡,它不清除暂停在<$ C设置$ C> previous标签

If I call clearIdleTimeout() in second tab, it does not clear the timeout set in previous tab

推荐答案

设置页

var timeout, interval;

timeout = setTimeout(function() {
  alert(123) // this should not be called
  clearTimeout(timeout)
  timeout = null;
  clearInterval(interval);
  interval = null;
}, 20000);
localStorage.setItem("timeout", timeout);

interval = setInterval(function() {
  console.log("checking localStorage:", localStorage.getItem("timeout"));
  // if `!localStorage.getItem("timeout")` : `true` 
  // call `clearTimeout()` with `timeout` as paramter
  if (!localStorage.getItem("timeout")) {
    clearTimeout(timeout);
    timeout = null;
    alert("cleared");
    clearInterval(interval);
    interval = null;
  }
}, 100)

http://plnkr.co/edit/wttPFS5RLgCu5OnF05Z1?p=info

设置页B

var t;
t = setTimeout(clearTabTimeout, 5000);

// clear `timeout` at `tab` "a"
function clearTabTimeout() {
  // remove `"timeout"` item from `localStorage`
  localStorage.removeItem("timeout");
  console.log(localStorage);
}

http://plnkr.co/edit/CgQqlVIUzUo7zeHCb2Ca?p=$p $ PVIEW

这篇关于ClearTimeout在另一个选项卡中设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆