vue 使用全屏插件screenfull.js的用法(解决全屏状态不能监听Esc按键)

开始使用screenfull.js

scss 复制代码
npm install --save screenfull  //下载
javascript 复制代码
import screenfull from 'screenfull' //导入

先来看看如果不使用screenfull.js,要让画面全屏幕的话,程序大概会像这样子

scss 复制代码
document.fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.documentElement.webkitRequestFullScreen;

function requestFullscreen(element) {
    if (element.requestFullscreen) {
        element.requestFullscreen();
    } else if (element.mozRequestFullScreen) {
        element.mozRequestFullScreen();
    } else if (element.webkitRequestFullScreen) {
        element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
    }
}

if (document.fullscreenEnabled) {
    requestFullscreen(document.documentElement);
}

我们必须检查目前柳览器是否支持Fullscreen API,并针对不同浏览器调用不同的方法,而当载入screenfull.js,程序就简单多了:

scss 复制代码
if (screenfull.enabled) {
    screenfull.request();
}

只需要使用screenfull.enabled检查是否支持Fullscreen API,然后再使用screenfull.request()调用即可,超简单的啦!

ps:如果不能全屏,去掉if (screenfull.enabled) 这个判断。直接使用 screenfull.request();就行

对某个element使用全屏幕 如果只需要针对画面上的某个element进行全屏幕显示的话,也很简单,在screenfull.request()参数中加入要全屏幕显示的目标就可以了

javascript 复制代码
if (screenfull.enabled) {
  screenfull.request(document.getElementById('image'));
}

取消全屏幕显示 基本上浏览器都支持直接按esc来取消全屏幕,如果希望在程序中取消,只要调用screenfull.exit()即可

scss 复制代码
if (screenfull.enabled) {
  screenfull.exit();
}

解决全屏状态不能监听Esc按键

screenfull.isFullscreen是可以判断是否为全屏状态的

scss 复制代码
screenFull () {
      screenfull.toggle() //切换全屏
      if (screenfull.enabled) {
        screenfull.on('change', () => {
          if(screenfull.isFullscreen){
           //全屏时,要执行的操作
          }else{
            //取消全屏时,要执行的操作
          }
         // console.log('Am I fullscreen?', screenfull.isFullscreen ? 'Yes' : 'No');
        });
      }
    },

ps:如果不能执行操作,去掉if (screenfull.enabled) 这个判断。直接使用 screenfull.on;就行

相关推荐
宸津-代码粉碎机1 分钟前
Jar热部署进阶实战|修复原生方案OOM与类冲突问题,生产级无BUG优化方案
java·大数据·服务器·开发语言·前端·人工智能·python
To_OC8 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus9 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮9 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
徐小夕11 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
kyriewen12 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz12 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒13 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱13 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
zandy101113 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js