zoukankan      html  css  js  c++  java
  • html5-document.visibilityState

    document.hidden

    这个新出现的document.hidden属性,它显示页面是否为用户当前观看的页面,值为ture或false。

    document.visibilityState

    visibilityState的值要么是visible (表明页面为浏览器当前激活tab,而且窗口不是最小化状态),要么是hidden (页面不是当前激活tab页面,或者窗口最小化了。),或者prerender (页面在重新生成,对用户不可见。).

    visibilitychange事件

    监听页面可见性变化非常容易:

    // 各种浏览器兼容
    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事件呢?比如,如果你的页面上有嵌入视频正在播放,当用户切换到其它标签页时,你的标签页上的视频应自动暂停播放,当用户切换回来时继续接着播放。再比如,如果你的页面有自动刷新动作,当用户切换到其它标签页时,你就应该停止刷新,而当用户切换回来时继续之前的动作。

    饿了么有在用,做了个title reminder,可以去看看(切换tab)。

  • 相关阅读:
    我劝你不要记账
    富人不存钱
    1w+的心路历程
    简历这么写才对!
    Android 开发凉了吗!
    三个思维转变
    说一说赚钱
    【原】Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法(Matt Galloway著)读书笔记(二)
    【原】Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法(Matt Galloway著)读书笔记(一)
    【原】iOS开发进阶(唐巧)读书笔记(二)
  • 原文地址:https://www.cnblogs.com/rhett-web/p/4891141.html
Copyright © 2011-2022 走看看