JavaScript倒计时弹出窗口

JavaScript倒计时弹出窗口,javascript,html,function,timer,addeventlistener,Javascript,Html,Function,Timer,Addeventlistener,我试图在2秒不活动后创建一个包含javascript计时器弹出窗口的div,然后在再次有活动时消失 我想我就快到了,我已经用我的一些代码创建了一个 活动和非活动事件工作(即弹出和隐藏)-我只是不知道如何使倒计时显示在div中。理想情况下,当计时器达到0时,窗口将被重定向到google.com var div = document.createElement("div"); div.id = "timer"; div.style.display = "none"; div.style.width

我试图在2秒不活动后创建一个包含javascript计时器弹出窗口的
div
,然后在再次有活动时消失

我想我就快到了,我已经用我的一些代码创建了一个

活动和非活动事件工作(即弹出和隐藏)-我只是不知道如何使倒计时显示在
div
中。理想情况下,当计时器达到0时,窗口将被重定向到google.com

var div = document.createElement("div");
div.id = "timer";
div.style.display = "none";
div.style.width = "200px";
div.style.height = "200px";
div.style.background = "red";
div.style.color = "white";
div.style.position = "fixed";
div.style.top = "80%";
div.style.left = "50%";
document.body.appendChild(div);

var timeoutID;
var idleTimeout = 5; 
var idleSecondsTimer = null;
var idleSecondsCounter = 0;

function setup() {
    this.addEventListener("mousemove", resetTimer, false);
    this.addEventListener("mousedown", resetTimer, false);
    this.addEventListener("keypress", resetTimer, false);
    this.addEventListener("DOMMouseScroll", resetTimer, false);
    this.addEventListener("mousewheel", resetTimer, false);
    this.addEventListener("touchmove", resetTimer, false);
    this.addEventListener("MSPointerMove", resetTimer, false);

    startTimer();
}
setup();

function startTimer() {
    // wait 2 seconds before calling goInactive
    timeoutID = window.setTimeout(goInactive, 2000);
}

function resetTimer(e) {
    window.clearTimeout(timeoutID);
    goActive();
}

function goInactive() {
    div.style.display = "block";
    div.innerHTML = "Inactivity detected. Redirecting in ..." + (idleTimeout - idleSecondsCounter) + " ...please touch screen to close this message";
    // show a count down here then redirect to google.com
}

function goActive() {
    div.style.display = "none";
    startTimer();
}

我一直在跟随,这在很大程度上帮助了我。非常感谢您的帮助。

下面是带重定向的倒计时的实现

我刚刚添加了一个setInterval函数,每秒钟调用一次,以减少倒计时或重定向页面。此外,此计时器在
resetTimer
功能中被清除。显示的数字使用ID元素更新,使用
document.getElementById(“倒计时”).innerHTML

var div = document.createElement("div");
div.id = "timer";
div.style.display = "none";
div.style.width = "200px";
div.style.height = "200px";
div.style.background = "red";
div.style.color = "white";
div.style.position = "fixed";
div.style.top = "80%";
div.style.left = "50%";
document.body.appendChild(div);

var timeoutID;
var timerID;
var idleTimeout = 5; 
var idleSecondsTimer = null;
var idleSecondsCounter = 0;

function setup() {
    this.addEventListener("mousemove", resetTimer, false);
    this.addEventListener("mousedown", resetTimer, false);
    this.addEventListener("keypress", resetTimer, false);
    this.addEventListener("DOMMouseScroll", resetTimer, false);
    this.addEventListener("mousewheel", resetTimer, false);
    this.addEventListener("touchmove", resetTimer, false);
    this.addEventListener("MSPointerMove", resetTimer, false);

    startTimer();
}
setup();

function startTimer() {
    // wait 2 seconds before calling goInactive
    timeoutID = setTimeout(goInactive, 2000);
}

function resetTimer(e) {
    clearTimeout(timeoutID);
    clearTimeout(timerID);    
    goActive();
}

function goInactive() {
    idleSecondsCounter = 0;

    div.style.display = "block";
    div.innerHTML = "Inactivity detected. Redirecting in ...<span id='countdown'>" + (idleTimeout - idleSecondsCounter) + "</span> ...please touch screen to close this message";
    // show a count down here then redirect to google.com

    timerID = setInterval(function(){ 
        idleSecondsCounter++; 

        if(idleSecondsCounter >= 6) {
            clearTimeout(timerID);    
            window.location.href = "http://google.com";
        } else {            
            document.getElementById("countdown").innerHTML = (idleTimeout - idleSecondsCounter);
        }
    }, 1000);    
}

function goActive() {
    div.style.display = "none";
    startTimer();
}
var div=document.createElement(“div”);
div.id=“计时器”;
div.style.display=“无”;
div.style.width=“200px”;
div.style.height=“200px”;
div.style.background=“红色”;
div.style.color=“白色”;
div.style.position=“固定”;
div.style.top=“80%”;
div.style.left=“50%”;
文件.正文.附件(div);
var-timeoutID;
var-timerID;
var idleTimeout=5;
var idleSecondsTimer=null;
var idleSecondsCenter=0;
函数设置(){
addEventListener(“mousemove”,resetTimer,false);
这个.addEventListener(“mousedown”,resetTimer,false);
此.addEventListener(“按键”,重置计时器,错误);
这个.addEventListener(“DOMMouseScroll”,resetTimer,false);
此.addEventListener(“鼠标滚轮”,重置计时器,false);
此.addEventListener(“touchmove”,resetTimer,false);
此.addEventListener(“MSPointerMove”,resetTimer,false);
startTimer();
}
设置();
函数startTimer(){
//请等待2秒钟后再调用goInactive
timeoutID=设置超时(goInactive,2000);
}
功能重置计时器(e){
clearTimeout(timeoutID);
清除超时(timerID);
目的性();
}
函数goInactive(){
IDLESecondsCenter=0;
div.style.display=“块”;
div.innerHTML=“检测到不活动。重定向到…”+(idleTimeout-idleSecondsCenter)+“…请触摸屏幕关闭此消息”;
//在此处显示倒计时,然后重定向到google.com
timerID=setInterval(函数(){
idleSecondsCenter++;
如果(IDLESecondsCenter>=6){
清除超时(timerID);
window.location.href=”http://google.com";
}否则{
document.getElementById(“倒计时”).innerHTML=(idleTimeout-idleSecondsCenter);
}
}, 1000);    
}
函数goActive(){
div.style.display=“无”;
startTimer();
}

您只需启动一个setInterval来更新div消息,直到您需要查看下面的代码片段为止

PS:当您在goActive方法中处于活动状态时,您需要向clearInterval添加代码,以便下次它将再次从5开始计数,并且当您的计数器达到0时,它不会变为-1

var div=document.createElement(“div”);
div.id=“计时器”;
div.style.display=“无”;
div.style.width=“200px”;
div.style.height=“200px”;
div.style.background=“红色”;
div.style.color=“白色”;
div.style.position=“固定”;
div.style.top=“80%”;
div.style.left=“50%”;
文件.正文.附件(div);
var-timeoutID;
var idleTimeout=5;
var idleSecondsTimer=null;
var idleSecondsCenter=0;
函数设置(){
addEventListener(“mousemove”,resetTimer,false);
这个.addEventListener(“mousedown”,resetTimer,false);
此.addEventListener(“按键”,重置计时器,错误);
这个.addEventListener(“DOMMouseScroll”,resetTimer,false);
此.addEventListener(“鼠标滚轮”,重置计时器,false);
此.addEventListener(“touchmove”,resetTimer,false);
此.addEventListener(“MSPointerMove”,resetTimer,false);
startTimer();
}
设置();
函数startTimer(){
//请等待2秒钟后再调用goInactive
timeoutID=window.setTimeout(goInactive,2000);
}
功能重置计时器(e){
clearTimeout(timeoutID);
目的性();
}
函数goInactive(){
div.style.display=“块”;
div.innerHTML=“检测到不活动。重定向到…”+(idleTimeout-idleSecondsCenter)+“…请触摸屏幕关闭此消息”;
//在此处显示倒计时,然后重定向到google.com
idleSecondsTimer=setInterval(函数(){
idleSecondsCenter++;
div.innerHTML=“检测到不活动。重定向到…”+(idleTimeout-idleSecondsCenter)+“…请触摸屏幕关闭此消息”;
如果(idleTimeout-IdleSecondSconter==0){
清除间隔(idleSecondsTimer);
location.href=http://www.google.com';
}
},1000);
}
函数goActive(){
div.style.display=“无”;
startTimer();
if(idleSecondsTimer){
IDLESecondsCenter=0;
清除间隔(idleSecondsTimer);
}
}
佩伦特式居住者morbi tristique Sentecus et netus et malesuada是一个著名的土耳其人。前庭侵权人、世仇、别有用心者、临时诉讼人、担保人。不要让你的自由人坐在那里。我的生命是永恒的。莫里斯·普莱斯特拉特·埃利芬德·利奥。他是一个聪明的人。威斯康辛州的前庭、调味品、康茂德维塔、奥纳雷西特、威斯康辛州。埃涅亚发酵液、精粹葡萄汁调味品、红莓汁、豆豉箭叶。在turpis枕面部进行非enim治疗。乌特·费利斯。事实上,这是一个错误,是一个错误,是一个错误,是一个错误。阿利奎姆·埃拉特·帕特。Nam dui mi、tincidunt quis、accumsan porttitor、facilisis luctus、metus

佩伦特式居住者morbi tristique Sentecus et netus et malesuada以turpis egestas闻名。福贾码头前庭