Javascript/JQuery仅在页面焦点上执行Javascript
Javascript/JQuery Execute Javascript Only On Page Focus
在javascript中,如果用户在实际的选项卡/页面上,是否可以只执行javascript?
就像如果他切换到另一个选项卡,那么javascript进程将暂停,当他返回到该选项卡时,javascript将继续该进程。
除非使用特定于浏览器的代码或不完全标准的代码,否则没有直接的方法(请参阅katspaugh的答案)。
"停止"解决方案
-
设计代码,使其"可停止"。这是你必须根据你的背景来弄清楚的。
-
然后添加如下内容:
<html>
<head>
</head>
<body>
<script>
window.onblur = function() {
yourStopFunctionHere().
}
</script>
</body>
</html>
"Assert"解决方案
在窗口有焦点的地方插入以下代码:
if(windowHasFocus()) {
//your code here
}
测试窗口是否有焦点有不同的方法:JavaScript/jQuery:测试窗口是否具有焦点
异步解决方案
whenWindowHasFocus(fn); //where fn is the function you want to only run when window has focus
存在两种可能的实现之一。。。。。
通过setTimeout等待
function WhenWindowHasFocus(yourFunction){
if(windowHasFocus()) {
yourFunction();
}
setTimeout(function(){ WhenWindowHasFocus(yourFunction); }, 1000);
}
通过自定义事件等待
或者更好的是,如果你可以将依赖于窗口的功能(依赖于有焦点的窗口的功能)封装到一个单独的函数中,然后将该函数"挂钩"到window.onfocus。不过要小心这个。您不希望完全覆盖window.onfocus
函数(或者撤消您刚才所做的工作)。相反,您可能不得不使用某种自定义事件。大多数js框架都提供自定义事件。如果采用这种方式,window.onfocus
函数只会触发一些自定义事件,并且不必手动使用setTimeout编写任何循环代码。
//The below is pseudo-code. custom events differ between js frameworks
window.onfocus = function(){
window.FocusEvent.trigger()
}
function WhenWindowHasFocus(yourFunction){
if(windowHasFocus()) {
yourFunction();
}
window.focusEvent.addOnlyOnce(yourFunction);
}
相关文章:
- Javascript游戏输入失去焦点
- 无法在Chrome控制台中使用javascript将焦点和光标设置为输入文本
- Javascript:联合焦点模糊
- 无法通过 JavaScript 在输入焦点上触发键盘
- 在 javascript 中将焦点设置在 dataTable 上
- Javascript焦点()出现问题
- 在表单提交后将焦点设置回原位(javascript)
- 如何使用javascript将焦点设置为文本框
- Javascript弹出窗口在某些情况下失去焦点
- 初学者尝试使用焦点/模糊:JavaScript
- Javascript 焦点删除文本突出显示
- Javascript焦点在Firefox中不起作用
- Javascript 焦点到文本框
- javascript焦点()是't聚焦
- JavaScript焦点()函数没有't将文本区域集中在页面加载上
- Javascript焦点按钮
- Javascript焦点不保留
- Javascript焦点在加载时不工作
- Javascript焦点对动态加载的输入框不起作用
- Javascript焦点函数没有按预期工作