我几天前开始使用javaScript,请记住这一点。
如果更改浏览器选项卡,如何让javaScript继续运行? 我尝试了一些谷歌的东西,但没有一个使它工作。 任何人都有任何想法我可以尝试?如果你能用我的代码发布和示例,我将不胜感激。
setIntervalFunction(){
secTot += sec/100;
}, 10);
答案 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();
这应该让你去。