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

防止电脑息屏 html

防止电脑息屏 html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>防息屏+防重复点击方案</title><!-- NoSleep.js 用于兼容旧版浏览器 --><script src="https://cdn.jsdelivr.net/npm/nosleep.js@0.12.0/dist/NoSleep.min.js"></script>
</head>
<body><button id="startBtn">启动防息屏</button><button id="timerBtn">测试按钮(防重复点击)</button><script>
// 第一部分:防息屏核心逻辑(兼容多浏览器)
let wakeLock = null;
let noSleep = new NoSleep();
let isIE = /*@cc_on!@*/false || !!document.documentMode; // IE检测[10]// 现代浏览器方案
async function modernWakeLock() {if ('wakeLock' in navigator) {try {wakeLock = await navigator.wakeLock.request('screen');// 监听页面可见性变化document.addEventListener('visibilitychange', async () => {if (document.visibilityState === 'visible' && !wakeLock) {wakeLock = await navigator.wakeLock.request('screen');}});} catch(err) {console.log('Wake Lock API不可用,回退到NoSleep.js');noSleep.enable(); // 自动启用备选方案[2][9]}} else {noSleep.enable();}
}// IE浏览器方案
function IEWakeLock() {if(isIE && window.ActiveXObject) {try {const objWs = new ActiveXObject("Wscript.Shell");setInterval(() => objWs.SendKeys("{SCROLLLOCK}"), 60000);} catch(e) {alert("请启用ActiveX控件!");}}
}// 第二部分:防重复点击逻辑(通用方案)
let clickTimer = null;
document.getElementById('timerBtn').addEventListener('click', function() {const btn = this;btn.disabled = true;btn.textContent = `请等待(30)`;clickTimer = setInterval(() => {const remain = parseInt(btn.textContent.match(/\d+/)[0]) - 1;btn.textContent = remain > 0 ? `请等待(${remain})` : "测试按钮";if(remain <= 0) {clearInterval(clickTimer);btn.disabled = false;}}, 1000);
});// 第三部分:启动逻辑(需用户交互)
document.getElementById('startBtn').addEventListener('click', function() {if(isIE) {IEWakeLock();} else {modernWakeLock();// 尝试自动进入全屏模式if(document.documentElement.requestFullscreen) {document.documentElement.requestFullscreen();}}this.disabled = true;this.textContent = "防息屏已激活";
});// 第四部分:安全释放资源
window.addEventListener('beforeunload', () => {if(wakeLock) wakeLock.release();noSleep.disable();clearInterval(clickTimer);
});
</script></body>
</html>
http://www.dtcms.com/a/285124.html

相关文章:

  • Bell不等式赋能机器学习:微算法科技MLGO一种基于量子纠缠的监督量子分类器训练算法技术
  • Java 8 jdk1.8下载及安装教程和环境变量配置
  • 电子电路中的电压符号命名约定
  • 【前端如何利用 localStorage 存储 Token 及跨域问题解决方案】
  • Python网络爬虫之requests库
  • ISL8121IRZ-T 瑞萨电子Renesas高效双路同步降压控制器 【5G基站、AI服务器】专用
  • LIN通信驱动代码开发注意事项
  • 多重共线性Multicollinearity
  • 复合机器人在生物制药实验室上下料搬运案例
  • LeetCode热题100【第二天】
  • 91套商业策划创业融资计划书PPT模版
  • AppTrace:重新定义免填邀请码,解锁用户裂变新高度
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | PasswordGenerator(密码生成器)
  • 三、了解OpenCV的数据类型
  • 高效去除字符串末尾重复单元的 KMP 前缀函数优化算法实现
  • VR 远程系统的沉浸式协作体验​
  • SpringBoot 使用MyBatisPlus
  • 在windows平台上基于OpenHarmony sdk编译三方库并暴露给ArkTS使用(详细)
  • VSCODE常规设置
  • No catalog entry ‘md5‘ was found for catalog ‘default‘. 的简单解决方法
  • 学习软件测试的第十八天
  • 一款基于PHP开发的不良事件上报系统源码,适用于医院安全管理。系统提供10类事件类别、50余种表单,支持在线填报、匿名上报及紧急报告。
  • 前端防复制实战指南:5 种主流方案效果对比与实现
  • Ubuntu20.04上安装Anaconda
  • 磁盘分区(D盘分给C盘)
  • 【Triton 教程】triton_language.zeros_like
  • 跨域通信inframe高级
  • docker安装、启动jenkins服务,创建接口自动化定时任务(mac系统)
  • Web APIs 知识复习1
  • 基于STM32闭环步进电机控制系统设计说明