我有一个setInterval函数,它每5秒运行一次。我希望该函数中的代码只在窗口处于焦点状态时才运行。我试过了,但似乎不起作用。
$scope.myFunction = function() {
var isonfocus = true;
window.onblur = function() {
isonfocus = false;
}
window.onfocus = function() {
isonfocus = true;
}
if (isonfocus) {
console.log("focused!");
}
}
setInterval(function() {
$scope.myFunction();
}, 5000);
3条答案
按热度按时间polkgigr1#
我认为您正在寻找angular的
$window
Package 器,在函数之外定义isonfocus
也会有很大帮助。yyyllmsg2#
如果使用页面可见性API并响应事件而不是轮询,这是否会更好?
uqcuzwp83#
你意识到你在每次迭代时都在重新分配事件处理程序了吧?把onblur和onfocus事件处理程序移出你的$scope.myFunction,然后再试一次。