如何监听电脑屏幕是否发生切换

news2024/11/16 5:24:20

目录

1.屏幕监听的原理:

2.创建项目

3.离开计时


1.屏幕监听的原理:

为什么可以监听浏览器窗口的切换呢?那就是利用了浏览器的visibilitychange属性,MDN的介绍对visibilitychnge的介绍是:

当其选项卡的内容变得可见或被隐藏时,会在文档上触发 visibilitychange (能见度更改)事件。

所以如果我要监听屏幕切换的次数,我只需要监听visibilitychange属性即可:

但是记住为了保证浏览器对函数的兼容性,必须要使用document而不是windows

 出于兼容性原因,请确保使用 document.addEventListener而不是window.addEventListener来注册回调。 Safari <14.0仅支持前者。---摘自于MDN文档

 常见的监听函数:

document.addEventListener("visibilitychange", function() {
  if(document.visibilityState == 'hidden'){
      //todo...
  } else if (document.visibilityState == 'visible') {
      //todo...
  }
});

2.创建项目

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>tab1</title>
</head>
<body>
    <h1>我是页面1</h1>
    <script>
    document.addEventListener("visibilitychange", function() {

            if(document.visibilityState == 'hidden'){
            document.title = '禁止切换窗口';
         } else if(document.visibilityState == 'visible') {
            document.title = 'tab1';
         }
          });
    </script>
</body>
</html>

效果图:

 当我切换到其他窗口的时候,t原来窗口的tab就显示为禁止切换窗口

但是我们仔细想一想,这种情况只能适用于当我们在浏览器切换页面的时候,但是当我们从浏览器切换到其他程序呢?这个该怎么办,那么这个时候我们就要使用焦点监听属性了

所以,如果只靠visibilitychange这个属性,不能完全实现我们的需求,那还有什么办法呢?当然有的,我们可以监听当前窗口是否处于焦点状态! ,直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>tab1</title>
</head>
<body>
    <h1>我是页面1</h1>
    <script>
        document.addEventListener("visibilitychange", function() {
            console.log(document.visibilityState);
            if(document.visibilityState == 'hidden'){
                document.title = '禁止切屏';
            } else if(document.visibilityState == 'visible') {
                document.title = 'tab1';
            }
        });
​
        window.onfocus = function () {
            document.title = 'tab1';
           
        };
        window.onblur = function () {
            alert('禁止切屏');
        };
​
    </script>
</body>
</html>

3.离开计时

除了统计切屏次数外,还有离开的时长,这个也不难,只需要记录离开和再次进入的时间即可:

只要在前面的函数当中加入以下代码

let n = 0;
let isFirst = true; 
window.onfocus = function () {
  if(!isFirst) {
    alert(`请注意,你切屏了!总共离开${n}秒`);
    isFirst = true;
    n = 0;
  }
  document.title = 'tab1';
};
window.onblur = function () {
  isFirst = false;
  setInterval(function() {
    n++;
  }, 1000)
};

那么就可以啦,就可以在弹出警示框的同时,也展示离开的时间啦

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

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

相关文章

nginx(六十二)proxy模块(三)接收用户请求的包体

一 接收用户请求包体 nginx读取请求体的源码分析 说明&#xff1a; 虽然是被http core核心框架处理,但是被proxy反向代理模块使用重点&#xff1a; 哪些指令控制接收request body的行为? ① proxy_request_buffering 控制&#xff1a; nginx接收客户端 request body的方式…

【优化选址】遗传算法求解物流配送中心选址【含Matlab源码 1917期】

⛄一、物流选址简介 1 引言 配送中心是物流系统网络中的关键节点和重要的基础设施&#xff0c;在整个物流系统网络规划中起着枢纽性的作用[1]。快递物流配送中心选址是指在具有若干个发件网点或者若干个收件网点的物流配送区域内&#xff0c;综合考虑物流运输成本、配送中心建…

【计算机网络】Servlet API重点知识汇总

目录 1.HttpServlet&#xff1a; 2.HttpServletRequest&#xff1a; 3.HttpServletRequest代码实例&#xff1a; 3.1.打印请求的内容&#xff1a; 3.2.获取请求中的重要参数 &#xff08;query string中的值&#xff09;&#xff1a; 3.3.获取请求中的重要参数 &#x…

关于循环浅析

从c,c,python,scala到java&#xff0c;简单接触了这样一些编程语言&#xff0c;对于它们的基本语法中的循环想做个总结。 一、c&#xff0c;c C语言for循环&#xff08;for语句&#xff09;详解 (biancheng.net) //这个链接比较详细&#xff0c;本人也从中摘取了一些知识点。…

【javaEE】网络原理(传输层Part2)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言TCP相关机制4. 【滑动窗口】5.【流量控制】6.【拥塞控制】总结前言 一个人最大的痛苦来源于对自己无能的愤怒&#xff01; Hi&#xff0c;这里是不想秃头的宝贝儿&#xff01; 本文主要内容是 传输层中TCP相关…

什么是SRM,SRM有什么作用,SRM主要用途是什么?

简道云SRM管理应用一、什么是SRM? SRM是 Supplier Relationship Management 的英文缩写&#xff0c;即供应商关系管理。 SRM的最基本内容包括供应商分类选择、战略关系发展、供应商谈判和供应商绩效评价四个方面。 SRM是用来改善企业与供应商的关系&#xff0c;它是一种致力…

了解一下OAuth2.0到底是什么,有图解有案例

理论 OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;用来授权第三方应用获取用户数据&#xff0c;是目前最流行的授权机制&#xff0c;它当前的版本是2.0。 应用场景 假如你正在“网站A”上冲浪&#xff0c;看到一篇帖子表示非常喜欢…

Python交互Mysql数据库基本操作

安装pymysql第三方包 1. 安装pymysql 2. 查看安装情况 ​ 3. 卸载pymysq ​ Pymysql的使用 1. 导包 ​ 2. 创建和mysql服务端的连接对象 ​ 3. 获取游标对象 ​ 4. 执行sql语句 ​ 5. 获取查询结果集 ​ 6. 将增加和修改操作提交到数据库 7. 回滚数据 8. 关闭游标对象 …

【网页设计】期末大作业html+css(体育网站--足球 6页 )

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&…

mTD-SCDMA与TD-LTE双网络垂直切换matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 TD-SCDMA与TD-LTE共覆盖的范围内覆盖半径1000m&#xff1b; TD-SCDMA中心坐标(0,0)&#xff0c;覆盖半径1000m&#xff1b; 两个TD-LTE基站的中心坐标为&#xff08;150&#xff0c;0…

刚毕业被骗去了小公司,天天“取数做表”,后悔没早点用上这工具

经常看到年轻人提问“究竟是去大公司打杂好&#xff0c;还是去小公司磨练好&#xff1f;”这个问题我年轻的时候也想过&#xff0c;当时觉得去大公司只能当螺丝钉&#xff0c;做按部就班的工作&#xff0c;于是毅然决然放弃了大厂offer去了一家IT部门只有3个人的公司。当时我在…

通过电子文档管理改善患者体验和办公效率

通过电子文档管理改善患者体验和办公效率 在不远的过去&#xff0c;手动输入医疗信息和物理归档系统是所有医疗办公室的标准操作程序。医生和工作人员别无选择&#xff0c;只能写下信息&#xff0c;然后手动将数据输入办公系统。 当要求所有从业者使用电子病历的授权作为“患…

亚马逊买家号造成被封的原因有哪些?

现在很多人反馈说亚马逊买家号太容易被封了&#xff0c;去下单时都不知道什么情况都就砍单&#xff0c;账号登录不上了&#xff0c;而关于亚马逊买家号被封这个问题&#xff0c;不是一两个因素就能决定的&#xff0c;那么亚马逊买家号造成被封的原因有哪些&#xff1f; 1、账号…

虚拟机三种网络模式

基本知识 ipconfig查看信息。 网关(Gateway)又称网间连接器、协议转换器。是你连接到的上层节点的地址。 ip地址是你本身的地址&#xff08;如果是路由器分配的 那么是路由器所构建的内网地址&#xff09; 网卡&#xff1a;需要网卡才能连接其他设备 是设备端的 交换机&#x…

[附源码]SSM计算机毕业设计教师业绩考核系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Mybatis-Plus条件构造器学习and方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Mybatis-Plus条件构造器学习and方法一、代码1.Controller2、Service3、效果一、代码 1.Controller GetMapping("/queryProductList1")public List<ProductDTO&…

panads基础入门

目录 一、查看数据 二、选择数据 1、选择单列 2、 用 [ ] 切片行&#xff1a; 3、标签选择 1、选择某列的某一行&#xff0c;如下是 A 列 第 51 行的值 2、B列与A列的数据相互替换 3、用标签选取多列 4、用标签切片&#xff0c;包含行与列结束点&#xff1a; 5、提取标…

传奇列表格式怎么上传以及公告小窗口皮肤如何设置

相信各位新手小白GM在架设传奇配置登录器的时候都会遇到列表格式的问题&#xff0c;接下来我来教各位登录器的这个列表格式该怎么上传&#xff0c;列表上传地址&#xff1a;传奇常用引擎免费单机列表格式-传奇入门GOM-GEE引擎教学 我们版本是什么引擎我们就用什么引擎的列表格式…

基于Zookeeper实现高可用架构

Zookeeper高可用相关特性 Zookeeper介绍 ZooKeeper is a distributed, open-source coordination service for distributed applications It exposes a simple set of primitives that distributed applications can build upon to implement higher level services for sync…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识&#xff0c;高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper&#xff1f; Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…