如何:让javascript在浏览器选项卡更改时运行
how to: get javascript to run when browser tab is changed?
我几天前开始使用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();
这应该会让你继续前进。
相关文章:
- MobileFirst:在客户端运行计时器作业-最佳选项
- 使用自定义选项从控制台运行JSlint
- Chrome扩展插件:runtime.last运行tabs.get/tabs.remove时出错:没有id为0的选项卡
- 如何在并行选项卡中运行彗星聊天
- 将运行时中的最大缩放选项更改为 ol.在开放层 3 中查看
- 如何使setInterval在浏览器选项卡处于焦点时运行
- 在iPad上运行时,Mobile Safari中即将切换选项卡的Pagehide事件不会触发
- 如何:让javascript在浏览器选项卡更改时运行
- Chrome扩展-重定向当前选项卡后重新运行扩展脚本
- 若在两个不同的选项卡中打开同一个页面,如何防止javascript运行两次
- 自定义Div滑块运行过快,但仅当从另一个浏览器选项卡返回时
- 为什么我无法将此消息传递到选项卡中运行的所有帧
- Grunt为任务设置选项,并使用新值运行该任务
- 根据特定选项卡中的元素运行 .each()
- 首次运行时未发出首选项
- 在后台选项卡上运行画布
- 您能否检查 Web 应用程序是否已在另一个浏览器选项卡上运行
- 仅在选项卡处于活动状态时运行内容脚本循环
- 在浏览器关闭选项卡或浏览器退出上运行方法
- $window.unload 中的 Post 方法从未调用更改 url,关闭选项卡,但在关闭浏览器时运行