• H5的Page Visibility API


    概述

    哈哈,又学了一个H5的API。今天突然对动态获取网页的选中状态很感兴趣,然后去查了下,发现真的有个API控制它——Page Visibility API。于是把学到的东西记录下来,供以后开发时参考,相信对其他人也有用。

    具体可以参考:MDN Page Visibility API

    示例

    立刻把这个API用到了我的博客上面了。怎么查看效果呢?

    1. 确保浏览器是最新版本(IE要IE10以上)。
    2. 打开我的博客,然后点击浏览器的其它标签,就可以看到我的博客网页的标签的标题变成了(●—●)喔哟,崩溃啦!
    3. 回到我的博客的网页,就可以看到(/≧▽≦/)馒头加梨子!

    代码

    原理:当用户最小化网页或者浏览到其他标签的网页时,API将发送一个关于当前页面的可见信息的事件visibilitychange。通过监测这个事件,可以做出响应。然后根据document.hidden获取页面的可见状态,通过这个状态来动态修改标题。

    注意:这是原生js,不需要jQuery等插件。

    <script>
    (function() {
        'use strict';
        // Set the name of the "hidden" property and the change event for visibility
        var hidden, visibilityChange;
        if (typeof document.hidden !== "undefined") {
          hidden = "hidden";
          visibilityChange = "visibilitychange";
        } else if (typeof document.mozHidden !== "undefined") { // Firefox up to v17
          hidden = "mozHidden";
          visibilityChange = "mozvisibilitychange";
        } else if (typeof document.webkitHidden !== "undefined") { // Chrome up to v32, Android up to v4.4, Blackberry up to v10
          hidden = "webkitHidden";
          visibilityChange = "webkitvisibilitychange";
        }
    
        // If the page is hidden, change the title;
        function handleVisibilityChange() {
          if (document[hidden]) {
            document.title = '(●—●)喔哟,崩溃啦!';
          } else {
            document.title = '(/≧▽≦/)馒头加梨子!';
          }
        }
    
        // Warn if the browser doesn't support addEventListener or the Page Visibility API
        if (typeof document.addEventListener === "undefined" || typeof document[hidden] === "undefined") {
          console.log("This demo requires a modern browser that supports the Page Visibility API.");
        } else {
          // Handle page visibility change
          document.addEventListener(visibilityChange, handleVisibilityChange, false);
        }
    })();
    </script>
    
  • 相关阅读:
    Python数据可视化的四种简易方法
    阿里如何将“高峰前扩容、高峰后缩容”的梦想照进现实?
    支付宝客户端架构解析:Android 容器化框架初探
    阿里工业互联网平台“思考”:一场从0到1的蜕变
    关于Flutter初始化流程,我必须告诉你的是...
    类在什么时候加载和初始化
    instanceof 与isAssignableFrom
    Java注释@interface的用法【转】
    网站过滤器Filter
    正则表达式
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/8655006.html
Copyright © 2020-2023  润新知