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

时间:2013-12-13 12:10:16

标签: javascript

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

如果更改浏览器选项卡,如何让javaScript继续运行? 我尝试了一些谷歌的东西,但没有一个使它工作。 任何人都有任何想法我可以尝试?如果你能用我的代码发布和示例,我将不胜感激。

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

1 个答案:

答案 0 :(得分:1)

这看起来是Chrome: timeouts/interval suspended in background tabs?

的副本

如果仍然相关,这是chrome的一个功能(?),这里已经描述了一个可能的解决方案How can I make setInterval also work when a tab is inactive in Chrome?

如果你正在使用setTimeout或setInterval,那么Chrome会降低它们的速度,并且它们会像你期望的那样停止发射。建议的方法是基本上编写自己的时钟。

更新

另一个解决方案中的示例比此解决方案需要的要复杂一些。要简化先前的答案,您可以使用HTML5 Web Worker来完成此操作。这是一个简单的反例,取自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();

这应该让你去。