JS中的PageVisibility API

本文介绍了PageVisibilityAPI的三个主要组成部分:document.hidden、document.visibilityState及visibilitychange事件,并提供了跨浏览器兼容性的实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Page Visibility API : 判断页面可见性

由三部分组成:

1. document.hidden (返回布尔值) : 页面是否隐藏,切页,最小化

2. document.visibilityState (返回字符串) : 返回四个可能的状态值

  • "visible" :页面可见
  • "hidden" : 切页或浏览器最小化
  • "prerender" : 页面正在渲染
  • "unloaded" : 页面从内存中卸载清除

3.visibilitychange事件 :切换页面,隐藏浏览器的时候触发

4.浏览器兼容: hidden属性和visibilitychange事件需要在前面加上浏览器前缀

IEChromeFireFoxOpera
”ms“"webkit""moz"
"o"

目前为止主流浏览器的最新版本已经不需要加上前缀。

5.跨浏览器代码

function isHiddenSupported(){//检测浏览器是否支持该API
    return ("hidden" in document || "msHidden" in document || "webKitHidden" in document);
}
//页面是否隐藏
function isPageHidden(){
    return(document.hidden || document.msHidden || document.webKitHidden);
}
//visibilitychange事件
function visibilitychangeEvent(handler){
	var versionProp = getPrefixName();	
	document.addEventListener(versionProp,handler,false);
}

function getPrefixName(){
	if ("hidden" in document) {
		//重写函数,避免每次调用都做一遍浏览器检测
		getPrefixName = function(){
			return "visibilitychange";
		}
	}
	else if("msHidden" in document) {
		getPrefixName = function(){
			return "msvisibilitychange";
		}
	}
	else if("webKitHidden" in document) {
		getPrefixName = function(){
			return "webkitvisibilitychange";
		}
	}
	else if("oHidden" in document){
		getPrefixName = function(){
			return "ovisibilitychange";
		}
	}
	else{
		throw new Error("PageVisibility was unsupport");
	}
	
	return getPrefixName();
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值