screenfull(vue全屏)

问题:首页有一个进入”数据大屏“页面的按钮,进入直接以大屏显示。”数据大屏“页面(没有退出/进入全屏的按钮,只能键盘F11和ESC退出全屏)。

安装插件:npm i screenfull@5.1.0 (这里指定了版本)

引入:import screenfull from 'screenfull'

首页进入数据大屏:

click() {
      if (!screenfull.isEnabled) {
        this.$message({ message: '你的浏览器不支持全屏', type: 'warning' })
        return false
      }
      this.$router.push('/screen')
      screenfull.request(); // 直接请求进入全屏模式
    },

以下代码均是写在”数据大屏“页面 :

mounted() {
  window.addEventListener("keydown", this.KeyDown, true); // 监听按键事件
},
beforeDestroy() {
  window.removeEventListener("keydown", this.KeyDown, true);
},
//以下是 method 中的方法
KeyDown(event) {
  console.log('执行了键盘事件');
  if (event.keyCode === 122 || event.keyCode === "Escape") {
     //禁用f11 和 ESC 键盘本身的事件
     event.returnValue = false;
     //触发全屏的按钮
     this.screenfull();
   }
},
screenfull() {
   console.log("屏幕变化");
},

进入了”数据大屏页面“之后,按下了F11,浏览器依然执行的是键盘的默认事件(退出全屏),console.log('执行了键盘事件');语句并没有执行。过了一会之后,按下键盘F11或者ESC,这时候才会执行我写的自定义事件(请教下大神解答)。

控制台输出:

解决方法:

将事件绑定在引入的插件 screenfull 上,

mounted() {
  // isEnabled 判断浏览器是否能支持全屏 API
  if (screenfull.isEnabled) {
    screenfull.on("change", this.handleScreenChange);
  }
},
beforeDestroy() {
  if (screenfull.isEnabled) {
    screenfull.off("change", this.handleScreenChange);
  }
},
methods: {
  handleScreenChange() {
    //isFullscreen 监听浏览器是否处在全屏状态
    if (screenfull.isFullscreen) {
      // console.log("进入全屏");
      // 执行进入全屏后的逻辑
    } else {
      // console.log("退出全屏"); 这里跳回首页
      this.$router.push("/index");
    }
  },
}

附上screenfull的几个自带的属性/函数(我使用的)

screenfull.isEnabled 布尔值,是否允许你进入全屏

screenfull.isFullscreen 判断当前是否是全屏

screenfull.toggle() 切换全屏函数(处在全屏则退出,否则进入全屏)

screenfull.request() 直接进入全屏状态的函数

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.0 中使用 screenfull 库进行全屏显示,可以按照以下步骤进行: 1. 安装 screenfull 库 ```shell npm install screenfull --save ``` 2. 在组件中引入 screenfull 库 ```javascript import screenfull from "screenfull"; ``` 3. 在组件中添加全屏切换方法 ```javascript toggleFullScreen() { if (screenfull.isEnabled) { screenfull.toggle(this.$refs.fullscreenRef); } } ``` 在上述代码中,我们检查了当前浏览器是否支持全屏 API,如果支持则调用 `screenfull.toggle()` 方法来切换全屏状态,其中 `this.$refs.fullscreenRef` 是需要全屏显示的元素的引用。 4. 在模板中添加全屏切换按钮 ```html <template> <div> <button @click="toggleFullScreen">全屏</button> <div ref="fullscreenRef">需要全屏显示的内容</div> </div> </template> ``` 在模板中,我们添加了一个全屏切换按钮和一个需要全屏显示的内容的引用。 完整的组件代码如下: ```html <template> <div> <button @click="toggleFullScreen">全屏</button> <div ref="fullscreenRef">需要全屏显示的内容</div> </div> </template> <script> import screenfull from "screenfull"; export default { methods: { toggleFullScreen() { if (screenfull.isEnabled) { screenfull.toggle(this.$refs.fullscreenRef); } } } }; </script> ``` 需要注意的是,虽然 screenfull 库可以帮助我们简化全屏显示的实现,但在使用该库时仍需要进行浏览器兼容性测试,保证在不同浏览器和设备上都能正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值