当前位置: 首页 > news >正文

js 3个事件监听器 EventListeners

起因, 目的:

我有2个显示器。 某视频网站,我想一边播放视频,一边搞其他。但是,当我把鼠标移动到浏览器外面,点击一下别处, 视频就会自动暂停. 这个叫做 事件监听

  • blur, 在元素或窗口失去焦点时触发
  • focus, 与 blur 相反。
  • visibilitychange

1. 自己先写个播放视频的例子。

html + css + js , 一个文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Video Player Example</title><style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;text-align: center;padding: 10px;}video {width: 100%;max-width: 1800px;height: auto;margin-bottom: 3px;}p {color: #555;}</style>
</head><body><h1>Video Player: a.mp4</h1><video id="myVideo" controls><source src="a.mp4" type="video/mp4">Your browser does not support the video tag.</video><p id="status">The video is playing...</p><script>const video = document.getElementById('myVideo');const status = document.getElementById('status');// 当窗口失去焦点时暂停视频window.addEventListener('blur', () => {video.pause();status.textContent = 'The video is paused because the window lost focus.';});// 当窗口重新获得焦点时恢复播放window.addEventListener('focus', () => {video.play();status.textContent = 'The video is playing...';});// 当页面变为不可见时暂停视频document.addEventListener('visibilitychange', () => {if (document.hidden) {video.pause();status.textContent = 'The video is paused because the page is not visible.';} else {video.play();status.textContent = 'The video is playing...';}});</script></body>
</html>

播放效果:
在这里插入图片描述

2. 浏览器中,执行下面这段 js 代码,会移除这3个事件监听函数。
// 获取窗口的 blur 和 focus 事件监听器
const blurListeners = getEventListeners(window).blur;
const focusListeners = getEventListeners(window).focus;// 获取文档的 visibilitychange 事件监听器
const visibilityListeners = getEventListeners(document).visibilitychange;// 移除 blur 事件监听器
blurListeners.forEach(listener => {window.removeEventListener('blur', listener.listener);
});// 移除 focus 事件监听器
focusListeners.forEach(listener => {window.removeEventListener('focus', listener.listener);
});// 移除 visibilitychange 事件监听器
visibilityListeners.forEach(listener => {document.removeEventListener('visibilitychange', listener.listener);
});console.log('All specified event listeners removed.');

然后视频就能正常播放了。

3. 但是,如果把上面的js 代码,改写到 chrome 插件中,则无法运行。因为:

getEventListeners:这是 Chrome DevTools 中的一个特殊方法,用于查看某个元素上绑定的事件监听器。注意,它在普通 JavaScript 环境中是不可用的,只能在 DevTools 中使用。

4. Todo
  • 继续研究 EventListener.
  • 然后重新改写, 最后放到 自己的 chrome 插件中。
  • 找点 chromde devtools 的教程视频。

个人接单,python, R语言,有事请私聊

老哥,支持一下啊。

支付宝扫码领红包哦

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android Studio 安装配置教程(Windows最详细版)
  • 镀金引线---
  • 【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题四
  • 港迪技术IPO上市实施募投项目,带动公司多维度能力综合提升
  • Java 之多线程高级
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • 828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘
  • Java中的红黑树(如果想知道Java中有关红黑树的知识点,那么只看这一篇就足够了!)
  • 【渗透测试】-vulnhub源码框架漏洞-Os-hackNos-1
  • 运维工程师面试整理-数据库
  • el-input设置type=‘number‘和v-model.number的区别
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • 【ARM】Trustzone和安全架构
  • golang学习笔记18——golang 访问 mysql 数据库全解析
  • Amoco:一款针对二进制源码的安全分析工具
  • C++11: atomic 头文件
  • Java多态
  • leetcode386. Lexicographical Numbers
  • React系列之 Redux 架构模式
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • VUE es6技巧写法(持续更新中~~~)
  • 阿里云购买磁盘后挂载
  • 测试如何在敏捷团队中工作?
  • 对JS继承的一点思考
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 工作手记之html2canvas使用概述
  • 深度解析利用ES6进行Promise封装总结
  • 数据结构java版之冒泡排序及优化
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 延迟脚本的方式
  • 由插件封装引出的一丢丢思考
  • 与 ConTeXt MkIV 官方文档的接驳
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​补​充​经​纬​恒​润​一​面​
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • (2.2w字)前端单元测试之Jest详解篇
  • (补充)IDEA项目结构
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (二)Linux——Linux常用指令
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (九)信息融合方式简介
  • (十八)三元表达式和列表解析
  • (四)鸿鹄云架构一服务注册中心
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)Neo4j下载安装以及初次使用
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)fock函数详解
  • (转)负载均衡,回话保持,cookie
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .Net Core 微服务之Consul(二)-集群搭建