在以下更改的其他条件下需要设置超时

时间:2018-11-05 18:05:00

标签: javascript angular

  ngonit()
{
this.timeout();
}
   //timer
 timer:any;
  time() {
  this.timer = setTimeout(() => {
       console.log(this.timer);
       this.openDialog();
  }, 10000)
  console.log(this.timer);
  }
  timeout() {
  
   document.addEventListener('keypress', () => {
      clearTimeout(this.timer);
      this.time();
    });
    document.addEventListener('click', () => {
      clearTimeout(this.timer);
      this.time();
    });
    document.addEventListener('mousemove', () => {
      clearTimeout(this.timer);
      this.time();
    })
 }

如果用户6秒钟没有访问该页面,我们需要提醒用户您已注销。所以我想在if条件下用户闲置5秒钟时显示popup(警告)消息,否则如果我需要显示1秒钟另一个弹出窗口,则在用户不访问page.so时注销,那么6秒钟后完全退出我们需要向用户显示第二个弹出消息已注销。下面的代码是我返回的,仅用于在用户闲置5秒后显示弹出窗口。您可以编辑此代码吗?

1 个答案:

答案 0 :(得分:1)

开始var timer:any;在javascript中无效;

您的计时器需要设置为5000,即5秒,然后在其中始终清除计时器(以避免多次单击调用同一功能),并且当计时器达到5秒时,请以1000毫秒启动另一个计时器,这将调用out()函数。

out()内,您不需要每次都向文档添加侦听器,只需使用一个布尔值来检查它是否已添加。一次添加侦听器就足够了。

此外,由于session()是一个函数,因此从一开始就必须调用该函数至少一次。

var timer;
var listenersAdded = false;
function session() {
  clearTimeout(this.timer)
  this.timer = setTimeout(() => {
      console.log("please access the page ur going to logout in 1 seconds");
      this.timer = setTimeout(() => out(), 1000)
  }, 5000)  
}

function out() {
 console.log("logged out");
 if (listenersAdded != true){
  listenersAdded = true
  document.addEventListener('keypress', session);
  document.addEventListener('click', session); 
 }
}

session()

但是您知道,几乎不可能阅读有关注销的消息并在不到一秒钟的时间内完成某件事,对吧?