当前位置:首页 > VUE

vue实现全屏事件

2026-03-29 02:30:35VUE

监听全屏状态变化

使用 document 的全屏相关事件监听全屏状态变化:

document.addEventListener('fullscreenchange', handleFullscreenChange);
document.addEventListener('webkitfullscreenchange', handleFullscreenChange);
document.addEventListener('mozfullscreenchange', handleFullscreenChange);
document.addEventListener('MSFullscreenChange', handleFullscreenChange);

function handleFullscreenChange() {
  const isFullscreen = document.fullscreenElement || 
                      document.webkitFullscreenElement || 
                      document.mozFullScreenElement || 
                      document.msFullscreenElement;
  console.log('全屏状态:', isFullscreen ? '已全屏' : '已退出全屏');
}

进入全屏模式

为特定元素触发全屏,需处理不同浏览器的前缀:

vue实现全屏事件

function enterFullscreen(element) {
  if (element.requestFullscreen) {
    element.requestFullscreen();
  } else if (element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if (element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if (element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

// 示例:点击按钮全屏
<button @click="enterFullscreen(document.documentElement)">全屏</button>

退出全屏模式

统一处理不同浏览器的退出逻辑:

vue实现全屏事件

function exitFullscreen() {
  if (document.exitFullscreen) {
    document.exitFullscreen();
  } else if (document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.msExitFullscreen) {
    document.msExitFullscreen();
  }
}

检测当前全屏状态

通过兼容性写法获取当前全屏元素:

function isFullscreen() {
  return !!(
    document.fullscreenElement ||
    document.webkitFullscreenElement ||
    document.mozFullScreenElement ||
    document.msFullscreenElement
  );
}

Vue组件封装示例

封装可复用的全屏功能组件:

<template>
  <div>
    <button @click="toggleFullscreen">
      {{ isFullscreen ? '退出全屏' : '进入全屏' }}
    </button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFullscreen: false
    };
  },
  mounted() {
    this.addEventListeners();
  },
  beforeDestroy() {
    this.removeEventListeners();
  },
  methods: {
    addEventListeners() {
      document.addEventListener('fullscreenchange', this.handleFullscreenChange);
      document.addEventListener('webkitfullscreenchange', this.handleFullscreenChange);
      // 其他前缀事件...
    },
    removeEventListeners() {
      document.removeEventListener('fullscreenchange', this.handleFullscreenChange);
      // 其他前缀事件...
    },
    handleFullscreenChange() {
      this.isFullscreen = !!(
        document.fullscreenElement ||
        document.webkitFullscreenElement
        // 其他前缀检测...
      );
    },
    toggleFullscreen() {
      if (this.isFullscreen) {
        this.exitFullscreen();
      } else {
        this.enterFullscreen(document.documentElement);
      }
    },
    enterFullscreen(element) {
      // 实现同前文
    },
    exitFullscreen() {
      // 实现同前文
    }
  }
};
</script>

注意事项

  • 全屏API必须在用户交互(如点击事件)中触发,否则会被浏览器阻止
  • 部分移动端浏览器可能不支持全屏API
  • 全屏状态下CSS可通过 :fullscreen 伪类定制样式
  • 建议在组件销毁时移除事件监听,避免内存泄漏

标签: 全屏事件
分享给朋友:

相关文章

Vue实现网页全屏

Vue实现网页全屏

Vue实现网页全屏的方法 在Vue中实现网页全屏功能可以通过浏览器的全屏API来实现。以下是几种常见的实现方式: 使用原生JavaScript全屏API 浏览器提供了requestFullscree…

vue实现事件委托

vue实现事件委托

事件委托的概念 事件委托是一种利用事件冒泡机制的技术,将子元素的事件监听绑定到父元素上,通过事件目标(event.target)判断实际触发事件的子元素,从而减少事件监听器的数量,提升性能。 Vue…

vue门户实现全屏显示

vue门户实现全屏显示

实现全屏显示的方法 在Vue中实现全屏显示可以通过浏览器的Fullscreen API完成。以下是具体实现步骤: 安装screenfull依赖 screenfull是一个跨浏览器的全屏API封装库,…

vue实现页面单击事件

vue实现页面单击事件

Vue 实现页面单击事件的方法 在 Vue 中实现单击事件可以通过 v-on 指令或 @ 简写来完成。以下是几种常见的实现方式: 使用 v-on 指令绑定单击事件 通过 v-on:click 可以直…

vue中怎么实现全屏

vue中怎么实现全屏

实现全屏的基本方法 在Vue中实现全屏功能可以使用浏览器提供的Fullscreen API。以下是一个简单的实现方式: // 进入全屏 function enterFullscreen(elemen…

vue点击局部实现全屏

vue点击局部实现全屏

实现局部全屏的方法 在Vue中实现局部全屏可以通过浏览器的Fullscreen API来完成。以下是一个完整的实现方案。 安装依赖 确保项目环境中已经安装了Vue。如果使用Vue 3,可以通过以下命…