首页 > 解决方案 > 需要设置超时需要在 if else 条件中进行以下更改

问题描述

  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 秒时显示弹出(警告)消息,否则如果我需要显示另一个弹出窗口 1 秒,如果用户未访问该页面,则您已注销。所以完全在 6 秒后我们需要向用户显示第二条弹出消息已注销。我返回的以下代码仅在用户空闲 5 秒时显示弹出窗口。您可以编辑它吗?

标签: javascriptangular

解决方案


开始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()

但是您知道,几乎不可能在不到一秒钟的时间内阅读有关注销的消息并执行某些操作,对吧?


推荐阅读