我在一个页面中做了大量的 ajax,一直轮询某个资源,这时候我在新选项卡打开了新的页面,那么我需要暂停或者停止之前那个页面的 ajax 数据提交,有一个思路就是判断当前页面是否获取焦点或者在最前面显示。
先看代码:
<script>
var hiddenProperty = 'hidden' in document ? 'hidden' :
'webkitHidden' in document ? 'webkitHidden' :
'mozHidden' in document ? 'mozHidden' :
null;
var visibilityChangeEvent = hiddenProperty.replace(/hidden/i, 'visibilitychange');
var onVisibilityChange = function(){
if (!document[hiddenProperty]) {
//在页面,有焦点或者在最前面显示
}else{
//焦点不在当前页面
}
}
document.addEventListener(visibilityChangeEvent, onVisibilityChange);
</script>