如何:让javascript在浏览器选项卡更改时运行

how to: get javascript to run when browser tab is changed?

本文关键字:运行 选项 浏览器 javascript 如何      更新时间:2023-09-26

我几天前开始使用javaScript,请记住这一点。

如果我更改浏览器选项卡,如何使javaScript保持运行?我试过一些谷歌的东西,但都没用。有人有我可以尝试的想法吗?如果你能发布并举例说明我的代码,我将不胜感激。

    setIntervalFunction(){
    secTot += sec/100;
}, 10);

这看起来是Chrome的复制:暂停/间隔挂在后台选项卡中?

如果仍然相关,这是chrome的一个功能(?),这里已经描述了一个可能的解决方案。当chrome中的选项卡处于非活动状态时,我如何使setInterval也能工作?

如果你正在使用setTimeout或setInterval,Chrome会减慢它们的速度,它们会像你预期的那样停止启动。建议的解决方法是基本上编写自己的时钟。

更新

另一个解决方案中的示例比这个解决方案所需的要复杂一些。为了简化前面的答案,您可以使用HTML5WebWorker来实现这一点。下面是一个简单的反例,取自http://www.w3schools.com/html/html5_webworkers.asp(附带小编辑):

page.html

<!DOCTYPE html>
<html>
<body>
<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button> 
<button onclick="stopWorker()">Stop Worker</button>
<br><br>
<script>
var w;
function startWorker()
{
    if(typeof(Worker) !== "undefined")
    {
        if(typeof(w) == "undefined")
        {
            w = new Worker("worker.js");
        }
        w.onmessage = function (event) {
            document.getElementById("result").innerHTML = event.data;
        };
    }
    else
    {
        document.getElementById("result").innerHTML = "Unsupported!";
    }
}
function stopWorker()
{ 
    w.terminate();
}
</script>
</body>
</html>

worker.js

var i=0;
function timedCount()
{
    i += 1;
    postMessage(i);
    setTimeout("timedCount()", 1000);
}
timedCount();

这应该会让你继续前进。