vue中使用visibilitychange事件来获取页面当前可见性

news2024/11/16 19:48:28

前言

在系统中,如果有打开新页面进行相关操作,若是有关联操作就需要通过判断页面的可见性来进行后绪的操作

一、触发visibilitychange变更的情况

页面的可见性有三个层面

  • 页面可见时,用户关闭 Tab 页或浏览器窗口。
  • 页面可见时,用户在当前窗口前往另一个页面。
  • 页面不可见时,用户或系统关闭浏览器窗口。

这三种情况,都会触发visibilitychange事件。前两种情况,该事件在用户离开页面时触发;最后一种情况,该事件在页面从可见状态变为不可见状态时触发。

二、 hidden与visibilityState

hidden与visibilityState 都是 document对象的属性

document.visibilityState

返回一个字符串,表示页面当前的可见性状态,共有三个可能的值。

  • hidden:页面彻底不可见。
  • visible:页面至少一部分可见。
  • prerender:页面即将或正在渲染,处于不可见状态。

只要页面可见,其值就是true,什么情况下是hidden呢?

  • 浏览器最小化。
  • 浏览器没有最小化,但是当前页面切换成了背景页。
  • 浏览器将要卸载(unload)页面。
  • 操作系统触发锁屏屏幕。

document.hidden

只读,返回一个布尔值,表示当前页面是否可见
当document.visibilityState属性返回visible时,document.hidden属性返回false;其他情况下,都返回true
推荐使用document.visibilityState来判断页面的可见性

三、visibilitychange 事件

只要document.visibilityState属性发生变化,就会触发visibilitychange事件。因此,可以通过监听这个事件(通过document.addEventListener()方法或document.onvisibilitychange属性),跟踪页面可见性的变化

四、代码示例

<template>
  <div ref="refDV">
    测试visibilitychange
    <el-button type="primary" @click="handleAddListener">启用</el-button>
    <el-button type="danger" @click="handleremoveListener">销毁</el-button>
  </div>
</template>
<script>
function gethiddenStatus() {
  var isHidden = document.hidden;
  if (isHidden) {
    // 失去焦点
    document.title = '小主,快回来';
    console.log('visibilitychange--lost', document.visibilityState);
  } else {
    // 未失去焦点
    document.title = '激活窗户';
    console.log('visibilitychange--com', document.visibilityState);
  }
}
export default {
  mounted() {
    this.handleAddListener();
  },
  destroyed() {
    this.handleremoveListener();
  },
  methods: {
    // 开启
    handleAddListener() {
      document.addEventListener('visibilitychange', gethiddenStatus, true);
    },
    // 手动销毁
    handleremoveListener() {
      document.removeEventListener('visibilitychange', gethiddenStatus, true);
    }
  }
};
</script>

输出结果参考:
在这里插入图片描述
销毁事件后,不再触发visibilitychange

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Zero Core系统配置工具

ASP.NET Zero Core系统配置工具 ASP。NET Zero是具有现代复杂应用程序连接的新web应用程序的起点。使用高级页面和强大的下属&#xff0c;您将能够从您的时间中受益。您可以使用ASP.NET ZERO作为基础程序&#xff0c;直接开始开发自己的代码和业务。 ASP.NET ZERO工具选项和功能…

sklearn中的特征选择feature_selection

特征选择 概念&#xff1a;就是从所有的特征中&#xff0c;选择出有意义&#xff0c;对模型有帮助的特征&#xff0c;以避免必须将所有特征都导入模型去训练的情况。特征选择常用的方法有&#xff1a;过滤法&#xff0c;嵌入法&#xff0c;包装法&#xff0c;和降维算法 过滤…

BN128曲线

1. 引言 BN系列椭圆曲线E(Fp):y2x3b&#xff0c;其中b≠0E(\mathbb{F}_p):y^2x^3b&#xff0c;其中b\neq 0E(Fp​):y2x3b&#xff0c;其中b​0&#xff0c;由Paulo S. L. M. Barreto1 和 Michael Naehrig 在2005年论文 Pairing-Friendly Elliptic Curves of Prime Order中首…

增长思维 —— 撬动企业增长的杠杆

增长一定不是只适用于互联网公司 营销&#xff1a;获客 增长&#xff1a;研究的是用户全生命周期 增长思维&#xff1a;以供需分析为基础&#xff0c;从用户全生命周期寻找增长点的方法论 这个模型的核心是啊哈时刻&#xff0c;指的是一个产品对用户价值感最强的那个点 一个…

画饼画到世界地图上:按比例呈现多组数据

地图是数据可视化的一部分&#xff0c;做群体遗传学、动物学、植物学、微生物学等的朋友经常用到世界地图&#xff0c;比如绘制不同小麦品种的世界分布。一般情况下&#xff0c;我们根据经纬度将数据标注在地图上&#xff0c;然而有些时候&#xff0c;我们会需要更高级的标注&a…

Apache doris 1.2.0 release

亲爱的社区小伙伴们&#xff0c;再一次经历数月的等候后&#xff0c;我们很高兴地宣布&#xff0c;Apache Doris 于 2022 年 12 月 7 日迎来 1.2.0 Release 版本的正式发布&#xff01;有近 118 位 Contributor 为 Apache Doris 提交了超 2400 项优化和修复&#xff0c;感谢每一…

Ubuntu 22.04 桌面美化之Mac Big Sur风格

Ubuntu 默认的桌面也是一个不错的样式&#xff0c;但千篇一律的主题很容易让人疲惫。本文描述了如何通过安装 gnome 桌面主题和动画&#xff0c;使桌面趋向于 Mac 的样式。 美化后的样式如下&#xff0c;请参考&#xff1a; 一、主题和图标美化 1.1 安装 tweaks 打开终端&…

抽奖小程序怎么做?

抽奖小程序怎么做&#xff1f;大概需要多少钱&#xff1f; 价格方面&#xff0c;平台按年收费&#xff0c;一年1498至2498元。 明码标价&#xff0c;7天退款制度&#xff0c;随时退。 抽奖小程序怎么做步骤: 1.进入第三方抽奖小程序制作平台官网注册账号并登录。 抽奖小程…

Kubernetes集群安装卸载

生命无罪&#xff0c;健康万岁&#xff0c;我是laity。 我曾七次鄙视自己的灵魂&#xff1a; 第一次&#xff0c;当它本可进取时&#xff0c;却故作谦卑&#xff1b; 第二次&#xff0c;当它在空虚时&#xff0c;用爱欲来填充&#xff1b; 第三次&#xff0c;在困难和容易之…

银河麒麟服务器系统V10开启root用户自动登录的图文教程

HI,最近公司拿回来一个联想服务器,配置还可以啊,所以就想着在本地搭建一套常用的测试环境,但是这个服务器是扁平的,不像是主机那样,这种是锁定在主机箱上的,而且噪音很大,一直嗡嗡嗡的,所以打算弄好之后放在离我远一些的地方,不然真的没法工作,全是噪音,系统都部署…

transformer14

太强了都连载14了~~ 这次是无残差连接或归一化层&#xff0c;也能成功训练深度 尽管取得了很多显著的成就&#xff0c;但训练深度神经网络&#xff08;DNN&#xff09;的实践进展在很大程度上独立于理论依据。大多数成功的现代 DNN 依赖残差连接和归一化层的特定排列&#xff…

ROS多机通信(ssh控制)

这种方法需要在局域网范围内进行&#xff0c;通信距离取决于WIFI模块的传播距离 1、连接同局域网 将主机和从机连接相同的网络&#xff0c;在同一局域网内。例如192.168.0.*&#xff08;前三位相同&#xff09; 网络会自动给每个机器一个IP 2、安装SSH sudo apt-get insta…

SpringBoot自动配置的原理-@SpringBootApplication

文章目录1自动配置原理1.1 SpringBootConfiguration1.2.ComponentScan1.3 EnableAutoConfiguration2 为什么不使用 Import 直接引入自动配置类学完这篇文章&#xff0c;可以了解到 SpringBoot 自动配置原理1自动配置原理 SpringBootConfiguration 是一个组合注解&#xff0c;由…

Pinely Round 1 (Div. 1 + Div. 2) E.Make It Connected(思维题/并查集+分类讨论)

题目 n(n<4e3)个点不包含自环和重边的无向图&#xff0c; 你可以执行以下操作若干次&#xff1a; 1. 选择一个点u 2. 对于每个点v(v≠u)来说&#xff0c;若u、v之间当前有一条边相连&#xff0c;则断开这条边&#xff0c; 否则在u、v之间加一条边&#xff0c;使之相连 …

C++Mysql8.0数据库跨平台编程实战(下)

CMysql8.0数据库跨平台编程实战&#xff08;下&#xff09;第六章 跨平台中文乱码问题和mysql锁1、MySQLAPIC封装策略和方法说明windows上字符集gbk和utf8互转开始写代码把测试框架搭起来linux上字符集GBK和UTF8互转ZPMysql库添加字符集转换函数并测试GBK插入utf-8的数据我们把…

Android之Zygote(下)--- SystemServer详解

SystemServer是由zygote.forkSystemServer函数fork出来的子进程&#xff0c;forkSystemServer是一个native函数&#xff0c; /dalvik/vm/native/dalvik_system_Zygote.c static void Dalvik_dalvik_system_Zygote_forkSystemServer(const u4* args, JValue* pResult) {pid_t …

ABAP学习笔记之——第十章:面向对象ALV

一、ALV ALV 是 ABAP List Viewer 的缩写&#xff0c;是实际业务中查询数据或修改数据时经常使用的程序。 1、ALV的主要功能排序功能 (Ascending/Descending); 过滤设置; 变更列宽; 变更布局; ABC 分析; 下载 Excel及 Word 文档的保存。 2、ALV的类型 Function ALV; …

java计算机毕业设计ssm校园疫情防控系统u3669(附源码、数据库)

java计算机毕业设计ssm校园疫情防控系统u3669&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

Docker安装以及容器使用笔记

我们知道容器是一个打包了应用和相关依赖的盒子,那怎么去操控这个盒子呢? 这一篇我通过一个简单的aspnetcore程序来加深对盒子的理解,使用之前先 安装一下Docker的环境。 一:Docker的安装 官方下载地址:Install Docker Engine on CentOS | Docker Documentation ,跟着文…

深度学习——NiN网络模型(笔记)

网络中的网络&#xff08;NiN&#xff09; 1.全连接层的问题&#xff1a;参数多&#xff0c;容易过拟合。 ①卷积层需要的参数较少 ②卷积层后第一个全连接层参数对比 参数过多带来的问题&#xff1a;1.占内存 2.占用计算的带宽多3.容易过拟合 2.NiN为了解决全连接层参数过多的…