HTML5 Page Visibility

什么是 Page Visibility ?
Page Visibility 即页面可见性,通过 visibilityState 的值检测页面当前是否可见。当一个网站是可见或点击选中的状态时 Page Visibility API 可以让你获取到这种状态,当用户最小化网页或者浏览到其他标签的网页时,API将发送一个关于当前页面的可见信息的事件vibilitychange。你可以检测该事件然后执行一些活动或是展示不同的效果。这个API在节约资源上是非常有用的,当网页不可见时,这个API通过提供给开发者可以操作不必须的任务的接口。比如,如果你的网站正在播放一个视频,也许当用户浏览其他浏览器时它可以暂停,那么当用户切换回来的时候,就可以继续播放了。用户可以继续观看,不会因为浏览其他的浏览器导致丢失当前视频的进度。

页面可见性(Page Visibility)API可以有哪些用途?

  • 网站有图片轮播效果,只有在用户观看轮播的时候,才会自动展示下一张幻灯片。
  • 显示信息仪表盘的应用程序不希望在页面不可见时轮询服务器进行更新。
  • 页面想要检测是否正在渲染,以便可以准确的计算网页浏览量
  • 当设备进入待机模式时,网站想要关闭设备声音(用户按下电源键关闭屏幕)
  • 可应用于视频站点。当用户进入页面播放,离开页面暂停。
  • 可应用于登录同步。
  • 可用于计算在线时长。
  • 在线聊天离开状态。
  • 还有一些切换效果,比方说,每次用户切换到你这个页面上的时候,logo抖一下,或页面一道亮光闪过,或者欢迎语之类。

如何使用?

Page Visibility API的规范很简单,只有两个属性:

document.hidden 根据浏览器窗口的状态返回布尔值 true 或 false。

document.visibilityState存储具体的状态字符串。一共有四种状态:

  • visible : 页面内容至少是部分可见,非最小化窗口的前景选项卡。
  • hidden : 页面内容对用户不可见,可以是一个后台标签,或是最小化窗口的一部分,或是在操作系统锁屏激活的状态下。
  • prerender : 页面内容正在被预渲染且没有对用户是不可见的
  • unloaded : 页面正在从内存中卸载。

下面写一个计算在线时长的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>0 : run</title>
</head>
<style>

</style>
<body>
<h1>你在页面停留的时间为 <span id="time">0</span> s</h1>
<h1>这是你第 <span id="count">0</span> 次离开又回来了。</h1>
<script>
    var i = 0,
            count = 0,
            si = setInterval(function () {
                document.querySelector(‘#time‘).innerHTML = ++i;
                document.title = i + ‘ : run‘;
            }, 1000);
    document.addEventListener("visibilitychange", function () {
        if (document.hidden) {
            clearInterval(si);
            document.title = i + ‘ : pause‘;
        } else {
            document.querySelector(‘#count‘).innerHTML = ++count;
            si = setInterval(function () {
                document.querySelector(‘#time‘).innerHTML = ++i;
                document.title = i + ‘ : run‘;
            }, 1000);
        }
    });
</script>
</body>
</html>

上例代码大意是:当页面可见时,计时停留的时间,当页面不可见时,计时器停止,页面标题与之同步(切换标签页时注意标题)。再次返回页面,继续计时并且显示当前离开又回来的次数。

本文只是个引子,简单介绍基础使用,更为复杂的应用和效果大家自行实现。

时间: 2024-08-03 16:35:59

HTML5 Page Visibility的相关文章

Page Visibility实现焦点丢失提醒

0.前言 HTML5 Page Visibility API是一个非常有用的特性,当页面对用户不可见时,暂停播放页面中的视频.动画.声音.以及其他耗费内存的操作,等用户回来时,再继续这些操作.当然,最好提醒下用户可以继续回到本页面上来,本文研究利用改变页面tab(title)实现提醒. 前言 效果预览 代码解析 实现过程 兼容性分析 学习资源 声明 效果预览 代码解析 实现过程 实现过程非常简单,侦听visibilitychange事件,然后改变页面标题. var title = documen

Page Visibility(页面可见性) API介绍、微拓展[转]

一.网页君的悲情谁来懂 唉,突然想到了一首悲情诗: 泪湿罗巾梦不成,夜深前殿按歌声.红颜未老恩先断, 斜倚薰笼坐到明. 学生时代学过的一首诗,已还给老师不知所云的诸位可参见下面释义: 诗的主人公是一位不幸的宫女.她一心盼望君王的临幸而终未盼得,时已深夜,只好上床,已是一层怨怅.宠幸不可得,退而求之好梦:辗转反侧,竟连梦也难成,见出两层怨怅.梦既不成,索性揽衣推枕,挣扎坐起.正当她愁苦难忍,泪湿罗巾之时,前殿又传来阵阵笙歌,原来君王正在那边寻欢作乐,这就有了三层怨怅.倘使人老珠黄,犹可解说:偏偏她

页面可见生Page Visibility

Page Visibility 会在浏览器的 document 对象上添加两个属性 hidden 和 visibilityState .如果当前的标签被激活了,那么 document.hidden 的值为 false ,否则为 true .visibilityState 则有4个可能值 1.hidden:当浏览器最小化.切换标签.电脑锁屏时 visibilityState 值是 hidden2.visible:当浏览器最顶级上下文(context)的 document 至少显示在一个屏幕当中时,

Page Visibility API(页面可见性)

页面可见性: 就是对于用户来说,页面是显示还是隐藏, 所谓显示的页面,就是我们正在看的页面:隐藏的页面,就是我们没有看的页面. 因为,我们一次可以打开好多标签页面来回切换着,始终只有一个页面在我们眼前,其他页面就是隐藏的,还有一种就是,把浏览器最小化,所有的页面就都不可见了. API 很简单,document.hidden 就返回一个布尔值,如果是true, 表示页面可见,false 则表示,页面隐藏.  不同页面之间来回切换,触发visibilitychange事件. 还有一个document

Html5 Page Creator,简易h5页面场景制作

原文地址:https://www.cnblogs.com/Kummy/p/10269645.html

杂谈:HTML 5页面可视性API

译文来源:http://www.ido321.com/1126.html 原文:HTML5 Page Visibility API 译文:HTML 5的页面可视性API 译者:dwqs 在早期.浏览器并没有提供选项卡,可是如今基本全部浏览器都提供了这个功能. 作为一个程序猿,我通常会同一时候打开10到15个选项卡,甚至有些时候会在25到30. 为什么介绍Page Visibility API呢? 之前,是不可能确定哪个选项卡是激活的,哪个没有激活.可是在HTML 5 Visibility API

html5知识

1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html>标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现. (2).标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行.在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作. 2.HTML5 为什么只需要写<!DOCTYPE HTML>

[转载]你可能不知道的5个功能强大的 HTML5 API —— html5系列

HTML5 新增了许多重要的特性,像 video.audio 和 canvas 等等,这些特性使得能够很容易的网页中包含多媒体内容,而不需要任何的插件或者 API.而其它的新元素,例如 section.article.header 和 nav 等则是用来丰富网页内容.另外还有很多强大的 JavaScript API,下面这5个 HTML5 API 你可能不知道,通过今天这篇文章可以了解一下. Fullscreen API 这个 HTML5 全屏 API 让 Web 开发者可以通过编程控制页面的全

html5的小知识点小集合

html5知识 1.  Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<html>标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现. (2).标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行.在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作. 2.HTML5 为什么只需要写<!DOCTYPE