JavaScript监听页面可见性(焦点)同时改变title的三种方法

举报
sq800 发表于 2020/08/24 15:19:34 2020/08/24
【摘要】 介绍一些监听页面可见性的方法

本文参考了https://developer.mozilla.org/zh-CN/docs/Web/API/Page_Visibility_API

效果图:

在当前页面image.png

离开当前页面image.png


onfocus onblur(方法1)

window.onfocus = function() { 
  console.log("onfocus");
  document.title="在这";
};
window.onblur=function(){
  console.log("onblur");
  document.title="离开了";
}

通过改变标签页 title 可清楚看到变化

下面是html5提供的方法

visibilitychange 事件

浏览器标签页被隐藏或显示的时候会触发visibilitychange事件。经测试(Chorme),浏览器最小化也会触发该事件。可以用addEventListener()向document添加监听事件,也可以直接写成document.onvisibilitychange = function() {…}

1.document.hidden(方法2)

如果页面处于被认为是对用户隐藏状态时返回true,否则返回false。

使用addEventListener向document添加监听事件,false是addEventListener默认的一个参数,可以不写

function handleVisibilityChange() {
if (document.hidden) {
	document.title="离开了";
} else  {
 	document.title="在这";
}
}
document.addEventListener("visibilitychange", handleVisibilityChange, false);

2.document.visibilityState(方法3)

是一个用来展示文档可见性状态的字符串。可能的值:

visible : 页面内容至少是部分可见。 在实际中,这意味着页面是非最小化窗口的前景选项卡。

hidden : 页面内容对用户不可见。 在实际中,这意味着文档可以是一个后台标签,或是最小化窗口的一部分,或是在操作系统锁屏激活的状态下。

prerender : 页面内容正在被预渲染且对用户是不可见的(被document.hidden当做隐藏). 文档可能初始状态为prerender,但绝不会从其它值转为该值。

function handleVisibilityChange(){
  if(document.visibilityState=="hidden"){
    document.title="离开了";
  }
  if(document.visibilityState=="visible"){
    document.title="在这";
  }
}
document.addEventListener("visibilitychange", handleVisibilityChange, false);

   

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。