浏览器阻止屏幕息屏,js阻止浏览器息屏,Web网页阻止息屏

场景: 比如打开一个浏览器页面(比如大屏),想让它一直显示着,而不是过几分钟不操作就屏幕黑了.(电脑有设置电脑不操作就会多长时间就会息屏睡眠,如果要求每个客户都去操作一下电脑设置一下从不睡眠,这很不友好和现实.而且我也只想客户在大屏的时候才这样,其他页面就正常,按电脑设定走)

实现方法:
要想屏幕保持唤起一直不息屏状态,很简单,一行代码的事情:

navigator.wakeLock.request('screen');

是不是很简单,但是这里面还有一些注意点,

  1. 由于保持屏幕唤醒是一个占用资源开销的操作,所以,浏览器有个行为,那就是如果当前页面最小化,或者非当前显示标签页,屏幕的Wake锁定行为会被释放,用户再切换过来的时候,就没有锁定了,因此,还需要其他代码的处理。
document.addEventListener('visibilitychange', () => {
  if (document.visibilityState === 'visible') {
    navigator.wakeLock.request("screen")
  }
});
  1. 在实操过程中,很容易重复执行唤醒锁定,因此,还需要知道什么时候释放了屏幕唤醒操作,以及如何主动释放禁止熄屏的功能。
wakeLock.release().then(() => {
  wakeLock = null;
});

来一波vue前端代码操作试验 :

html
   <el-radio-group v-model="radioVlaue" @input="changeStatue()">
      <el-radio :label="1">不息屏</el-radio>
      <el-radio :label="2">息屏</el-radio>
   </el-radio-group>
export default {
	data() {
      return {
         wakeLock: null,
      };
   },
   mounted() {
      this.setWakeLock();
   },
   methods: {
      changeStatue() {
         if(navigator.wakeLock) {
            if(this.radioVlaue == 1) {
               this.setWakeLock();
            }
            else {
               this.wakeLock.release().then(() => {
                  this.wakeLock = null;
               });
            }
         }
      },
      setWakeLock() {
         if(this.wakeLock) {
            return;
         }

         navigator.wakeLock.request('screen').then(result => {
            this.wakeLock = result;
            console.log('唤醒锁定已激活');
            this.wakeLock.addEventListener('release', () => {
               this.wakeLock = null;
               console.log('唤醒锁定已释放');
            });
         }).catch((err) => {
            console.error(`<span class="red">唤醒锁定失败:${err.message}</span>`);
         });

         if(navigator.wakeLock) {
            // 选项卡切换到当前页面,如果已经释放了熄屏,再次锁定
            document.addEventListener('visibilitychange', () => {
               if(this.wakeLock === null && document.visibilityState === 'visible' && this.radioVlaue == 1) {
                  this.setWakeLock();
               }
            });
         }
         else {
            console.error('当前浏览器不支持Screen Wake Lock API!');
         }
      },
   },

如果想看看效果,可以试试,最好把电脑息屏改成1分钟,要不然等太久了, 累啊…(除非等待时间玩把手游😁)

对了,还有一个要注意:
屏幕唤起锁定不是没有代价的,如果屏幕一直保持明亮,会阻止屏幕保护程序的启动,会影响显示器的寿命。
对于移动设备,屏幕往往是最耗电的,因此,阻止熄屏会带来更高的电量开销,因此,非必要场景是不推荐启用熄屏锁定的。

这是看了前端css大佬张鑫旭写的一波文章,观后有感😄,如果大家不认识,百度一波

拿走,不用谢!!!送人玫瑰,手留余香
在这里插入图片描述

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值