无需登录 数据私有 本地保存

Fullscreen API 练习场 - 自定义全屏体验

10
0
0
0
普通模式

✨ 全屏体验区

双击此处或点击下方按钮进入全屏

控制面板
双击 预览区进入全屏 Esc 退出全屏 F11 浏览器全屏
事件日志
--:--:-- 工具已就绪,等待操作...
当前状态
非全屏模式
全屏元素:
API支持: 检测中...
目标模式: 预览区域
Fullscreen API 常见问题与知识点
什么是 Fullscreen API?它有什么用途?
Fullscreen API 是一组浏览器提供的 JavaScript 接口,允许网页将特定元素(如视频、图片、游戏画布或任意 div)以全屏模式展示,占据用户的整个屏幕。常见用途包括:视频播放器的全屏按钮、在线演示文稿的全屏展示、网页游戏的沉浸式体验、代码编辑器的专注模式、数据可视化的全屏仪表盘等。与浏览器 F11 的全屏不同,Fullscreen API 可以针对单个元素进行全屏,更加灵活。
如何检测浏览器是否支持 Fullscreen API?
使用 document.fullscreenEnabled 属性(标准)或其前缀版本 document.webkitFullscreenEnableddocument.mozFullScreenEnabled 来检测。如果返回 true,说明浏览器支持 Fullscreen API。注意:即使在支持的浏览器中,全屏操作也必须在用户手势(点击、按键等)的回调中触发,不能通过脚本自动触发,这是浏览器的安全策略。
进入全屏和退出全屏的代码怎么写?
进入全屏:element.requestFullscreen()(标准),或使用带前缀版本如 element.webkitRequestFullscreen()。退出全屏:document.exitFullscreen()。监听全屏状态变化使用 fullscreenchange 事件,通过 document.fullscreenElement 判断当前是否处于全屏状态(非 null 即为全屏中)。本工具已内置了完整的浏览器兼容处理,你可以在事件日志中观察实际调用的 API。
移动端浏览器支持 Fullscreen API 吗?
移动端支持情况较为复杂。Android Chrome 从较早版本就支持 Fullscreen API。iOS Safari 从 iOS 12+ 开始支持(但早期版本有诸多限制),iPadOS 上的 Safari 支持较好。需要注意的是,移动端全屏时通常仍会保留部分浏览器 UI(如状态栏),体验与桌面端有所不同。建议在使用前通过 document.fullscreenEnabled 进行检测,并为不支持的情况提供降级方案。在移动端的微信内置浏览器、部分国产浏览器中可能完全不支持。
全屏模式下如何自定义样式?
CSS 提供了 :fullscreen 伪类(以及 :-webkit-full-screen:-moz-full-screen 等前缀版本),可以在元素进入全屏时应用特定样式。例如,你可以修改全屏时的背景色、字体大小、隐藏或显示特定元素。本工具的全屏预览区就使用了这个伪类来在全屏时移除圆角、调整尺寸,并显示退出按钮。注意全屏伪类只能匹配当前全屏的元素及其子元素。
用户按 Esc 退出全屏时,如何同步更新界面状态?
监听 fullscreenchange 事件即可。无论是通过 JavaScript 调用 exitFullscreen(),还是用户按 Esc 键,浏览器都会触发该事件。在事件回调中检查 document.fullscreenElement——如果为 null 说明已退出全屏,此时更新 UI 状态(如按钮状态、指示灯等)。本工具的日志面板和状态指示器就是通过这种方式保持实时同步的。
为什么我的全屏请求被浏览器拒绝了?
常见原因有:① 全屏请求不是在用户手势(click、keydown 等事件)的回调中触发的——浏览器要求全屏操作必须由用户主动触发;② 在 iframe 中调用全屏 API,需要 iframe 添加 allow="fullscreen" 属性;③ 某些浏览器在隐身模式下可能限制全屏功能;④ 元素未被添加到 DOM 中。可以通过监听 fullscreenerror 事件来捕获错误。