【问题标题】:Stop countdown when page is not focused [duplicate]页面未聚焦时停止倒计时[重复]
【发布时间】:2019-07-04 02:07:59
【问题描述】:

大家好,我是 JavaScript 新手,我希望在页面加载时自动开始倒计时,并且只有在页面获得焦点时才会恢复。这是一个例子http://hp30405.pythonanywhere.com/mz7z5/

如何在setTimeout(function() {}); 中使用相同的逻辑?

这是我的脚本:

$(window).load(function() {
    var timeleft = 20;
    var downloadTimer = setInterval(function() {
        document.getElementById("timer").innerHTML = timeleft;
        timeleft -= 1;
        if (timeleft < 0) {
            clearInterval(downloadTimer);
            document.getElementById("timer").innerHTML = "20 sec done";
        }
    }, 1000);

    setTimeout(function() {
        $("#submit").removeAttr("disabled");
    }, 22000);
});

【问题讨论】:

  • 先生,您没有阅读我的完整问题,如果页面加载,倒计时开始,如果页面模糊或聚焦,则倒计时暂停不会结束,如果用户再次返回 pagr,则倒计时恢复不会重新启动
  • 是什么阻止您在代码中实现建议的答案?

标签: javascript jquery


【解决方案1】:

您使用$(window).blur()$(window).focus()clearIntervalsetInterval。试试这个 不幸的是它在 sn-p 中不起作用,但在 sn-p 之外可以正常工作

let downloadTimer;
var timeleft = 20;
downloadTimer = setInterval(countDown, 1000);

function countDown() {
    document.getElementById("timer").innerHTML = timeleft;
    timeleft -= 1;
    if (timeleft < 0) {
        clearInterval(downloadTimer);
        document.getElementById("timer").innerHTML = "20 sec done";
    }
}

$(window).blur(function() {
    console.log("blurred");
    clearInterval(downloadTimer);
})
$(window).focus(function() {
    console.log("focuesed");
    downloadTimer = setInterval(countDown, 1000);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="timer"></div>

【讨论】:

  • 先生,它最初是在页面加载时开始的,但是如果我打开另一个选项卡它不会停止它会连续运行你的 ans 不起作用
  • @Techno Harsh 这在snippet 中不起作用,只需在单独的文件中使用它即可。它的工作。
  • 好的,先生,我如何在setTimeout(function() { $("#submit").removeAttr("disabled"); }, 22000); 中应用相同的逻辑,请参阅我的网站http://hp30405.pythonanywhere.com/mz7z5/ 的直播
  • @Techno Harsh 如果您满意,请接受答案。
  • @TechnoHarsh 完全不清楚为什么要使用 22000 以及您需要使用该按钮做什么。如果您也需要暂停那个,请使用相同/相似的逻辑。来吧,自己做一些编码!很有趣。
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多