使用HTML5里页面可见性接口判断用户是否正在观看你的页面
- - WebHek长期以来我们一直缺少一个判断用户是否正在浏览某个指定标签页的方法. 现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用 visibilitychange页面事件来判断当前页面可见性的状态,并针对性的执行某些任务. 同时还有新的 document.hidden属性可以使用. 这个新出现的 document.hidden属性,它显示页面是否为用户当前观看的页面,值为ture或false.
长期以来我们一直缺少一个判断用户是否正在浏览某个指定标签页的方法。用户是否去看别的网站了?他们切换回来了么?现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用 visibilitychange
页面事件来判断当前页面可见性的状态,并针对性的执行某些任务。同时还有新的 document.hidden
属性可以使用。
这个新出现的 document.hidden
属性,它显示页面是否为用户当前观看的页面,值为ture或false。
visibilityState
的值要么是 visible
(表明页面为浏览器当前激活tab,而且窗口不是最小化状态),要么是 hidden
(页面不是当前激活tab页面,或者窗口最小化了。),或者 prerender
(页面在重新生成,对用户不可见。).
监听页面可见性变化非常容易:
// 各种浏览器兼容 var hidden, state, visibilityChange; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; state = "visibilityState"; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; state = "mozVisibilityState"; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; state = "msVisibilityState"; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; state = "webkitVisibilityState"; } // 添加监听器,在title里显示状态变化 document.addEventListener(visibilityChange, function() { document.title = document[state]; }, false); // 初始化 document.title = document[state];
上面的代码会在页面可见性发生变化时修改 document.title
的值!
那么,什么时候需要使用 visibilitychange
事件呢?比如,如果你的页面上有嵌入视频正在播放,当用户切换到其它标签页时,你的标签页上的视频应自动暂停播放,当用户切换回来时继续接着播放。再比如,如果你的页面有自动刷新动作,当用户切换到其它标签页时,你就应该停止刷新,而当用户切换回来时继续之前的动作。