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;就行

相关推荐
计算机毕设定制辅导-无忧学长20 分钟前
《基于Spring Boot的迷游哈游戏综合服务平台的开发》
java·vue.js·spring boot·mysql·迷游哈游戏综合服务平台
恋猫de小郭1 小时前
Flutter 3.50 & Dart 3.14 发布,快来看看有什么更新吧
android·前端·flutter
非优秀程序员9 小时前
第10章 千团出世|《互联网产品恩仇录》
前端
非优秀程序员9 小时前
第11章 小高在对面|《互联网产品恩仇录》
前端
非优秀程序员9 小时前
第14章 只剩美团|《互联网产品恩仇录》
前端
非优秀程序员9 小时前
第09章 老乡何必为难老乡|《互联网产品恩仇录》
前端
非优秀程序员9 小时前
第03章 三大门户,烽烟起于瀛海威|《互联网产品恩仇录》
前端
非优秀程序员9 小时前
第04章 邮箱大战,163 与 QQ 的暗战|《互联网产品恩仇录》
java·vue.js·架构
曦樂~13 小时前
【Web Development】02 CSS
前端·css
风骏时光牛马13 小时前
后端服务接口开发与数据逻辑处理
前端