当前位置:首页 > JavaScript

js实现全屏功能

2026-03-15 14:54:32JavaScript

使用 requestFullscreen 方法

通过调用元素的 requestFullscreen 方法实现全屏功能。适用于现代浏览器,需处理前缀兼容性问题。

const element = document.documentElement; // 通常对根元素(html)使用
if (element.requestFullscreen) {
  element.requestFullscreen();
} else if (element.webkitRequestFullscreen) { // Chrome, Safari
  element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) { // IE/Edge
  element.msRequestFullscreen();
} else if (element.mozRequestFullScreen) { // Firefox
  element.mozRequestFullScreen();
}

监听全屏状态变化

通过 fullscreenchange 事件监听全屏状态变化,注意不同浏览器的事件名前缀。

js实现全屏功能

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

function handleFullscreenChange() {
  if (document.fullscreenElement || 
      document.webkitFullscreenElement || 
      document.msFullscreenElement || 
      document.mozFullScreenElement) {
    console.log('进入全屏');
  } else {
    console.log('退出全屏');
  }
}

退出全屏模式

通过 exitFullscreen 方法退出全屏,同样需要处理浏览器前缀。

js实现全屏功能

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

检测当前全屏状态

通过 fullscreenElement 属性检测当前是否有元素处于全屏状态。

const isFullscreen = !!(
  document.fullscreenElement ||
  document.webkitFullscreenElement ||
  document.msFullscreenElement ||
  document.mozFullScreenElement
);
console.log(isFullscreen ? '全屏中' : '非全屏');

全屏 API 的兼容性封装

以下是一个兼容性封装的完整示例,包含进入、退出和状态检测功能。

const fullscreen = {
  enter: (element = document.documentElement) => {
    const methods = [
      'requestFullscreen',
      'webkitRequestFullscreen',
      'msRequestFullscreen',
      'mozRequestFullScreen'
    ];
    for (const method of methods) {
      if (element[method]) {
        element[method]();
        break;
      }
    }
  },

  exit: () => {
    const methods = [
      'exitFullscreen',
      'webkitExitFullscreen',
      'msExitFullscreen',
      'mozCancelFullScreen'
    ];
    for (const method of methods) {
      if (document[method]) {
        document[method]();
        break;
      }
    }
  },

  isActive: () => {
    return !!(
      document.fullscreenElement ||
      document.webkitFullscreenElement ||
      document.msFullscreenElement ||
      document.mozFullScreenElement
    );
  },

  toggle: (element) => {
    if (fullscreen.isActive()) {
      fullscreen.exit();
    } else {
      fullscreen.enter(element);
    }
  }
};

// 使用示例
fullscreen.enter(); // 进入全屏
fullscreen.toggle(); // 切换全屏状态

标签: 全屏功能
分享给朋友:

相关文章

vue实现按钮实现点击功能

vue实现按钮实现点击功能

Vue 按钮点击功能实现 在 Vue 中实现按钮点击功能可以通过多种方式完成,以下是常见的实现方法: 方法一:使用 v-on 指令 通过 v-on:click 或简写 @click 绑定事件:…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 使用window.print()方法 Vue中可以直接调用浏览器的window.print()方法实现打印功能。这种方法简单快捷,适用于打印整个页面或特定区域。 meth…

原生实现vue功能

原生实现vue功能

原生 JavaScript 实现 Vue 核心功能 使用原生 JavaScript 模拟 Vue 的核心功能(如数据绑定、虚拟 DOM、响应式更新等),可以通过以下方式实现: 数据响应式系统 通过…

vue实现功能列表

vue实现功能列表

Vue 实现功能列表的方法 在 Vue 中实现功能列表通常涉及数据绑定、列表渲染、事件处理和状态管理。以下是几种常见的方法: 数据驱动列表渲染 使用 v-for 指令可以轻松实现列表渲染。假设有一个…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…

vue实现返回功能

vue实现返回功能

Vue 实现返回功能的方法 在 Vue 中实现返回功能通常涉及以下几种方式,具体取决于应用场景和需求。 使用 window.history API 通过调用浏览器原生的 history API 实现…