我想在用户不活动 10 秒后显示价格警报弹出。现在,弹出窗口仅在单击时显示。我想替换它。
我尽力了,但无法完成。
$(document).ready(function () {
var idleInterval = setInterval(inActiveTimer, 1000);
$(this).mousemove(function (e) {
idleTime = 0;
});
$(this).keypress(function (e) {
idleTime = 0;
});
$(".sleepy-close, .sleepy-overlay, .sleepy-wake-up").click(function () {
$(".sleepy-overlay").hide();
clearInterval(idleInterval);
});
});
代码的最后一部分导致单击启用弹出窗口。我怎样才能用自动弹出窗口替换它,该弹出窗口在 10 秒不活动后发生。
这
将帮助您捕获屏幕中 10 秒的不活动状态。根据需要更改代码。
document.body.innerText = "hello count the seconds";
setIdleTimeout(10000, function() {
document.body.innerText = "Where did you go?";
}, function() {
document.body.innerText = "Welcome back!";
});
function setIdleTimeout(millis, onIdle, onUnidle) {
var timeout = 0;
startTimer();
function startTimer() {
timeout = setTimeout(onExpires, millis);
document.addEventListener("mousemove", onActivity);
document.addEventListener("keypress", onActivity);
}
function onExpires() {
timeout = 0;
onIdle();
}
function onActivity() {
if (timeout) clearTimeout(timeout);
else onUnidle();
//since the mouse is moving, we turn off our event hooks for 1 second
document.removeEventListener("mousemove", onActivity);
document.removeEventListener("keypress", onActivity);
setTimeout(startTimer, 1000);
}
}
要重置setInterval
,您需要清除它并重新设置。使用以下代码:
// Instead of idleTime = 0
clearInterval(idleInterval);
idleInterval = setInterval(inActiveTimer, 10000);
查看此答案以获取更多信息
试试这个。
var idleTime = 0;
$(document).ready(function () {
var idleInterval = setInterval(function(){
if(idleTime >= 10){
$(".sleepy-overlay").hide(); // enabling the popup
idleTime = 0;
}else{
idleTime++;
}
}, 1000);
$(this).mousemove(function (e) {
idleTime = 0;
});
$(this).keypress(function (e) {
idleTime = 0;
});
});
纯 JavaScript 方法
您可以使用setTimeout
将计时器保留 10 秒,并在有活动时将其清除并立即重新启动。
var timeout;
function resetTimer(){
clearTimeout(timeout);
console.log("Clearing timer because of activity");
timeout = setTimeout(function(){
alert("Done with 10 Seconds!");
//Trigger your popup here
}, 10000);
}
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
//You can add more activity event listeners like click etc.