html 如何退出全屏播放
- 前端开发
- 2025-09-01
- 6
HTML 中,可以通过 JavaScript 退出全屏播放,使用
document.exitFullscreen()
方法即可退出全屏模式。
HTML中,退出全屏播放可以通过JavaScript来实现,全屏播放通常用于视频或游戏等需要沉浸式体验的场景,但有时用户可能需要退出全屏模式,以下是几种常见的方法来退出全屏播放:
使用 document.exitFullscreen()
document.exitFullscreen()
是退出全屏模式的最直接方法,它适用于当前文档处于全屏模式的情况,如果文档不在全屏模式,调用此方法会抛出错误。
if (document.fullscreenElement) { document.exitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else { console.log('Document is not in fullscreen mode'); }
使用 Element.requestFullscreen()
和 Element.exitFullscreen()
如果你知道是哪个元素进入了全屏模式,可以直接调用该元素的 exitFullscreen()
方法。
const videoElement = document.getElementById('myVideo'); if (videoElement.fullscreenElement) { videoElement.exitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else { console.log('Element is not in fullscreen mode'); }
使用全屏API的兼容性处理
不同的浏览器可能对全屏API的实现有所不同,因此为了确保兼容性,可以使用以下代码:
function exitFullscreen() { if (document.exitFullscreen) { document.exitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.webkitExitFullscreen) { // Safari, Chrome and Opera document.webkitExitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.mozCancelFullScreen) { // Firefox document.mozCancelFullScreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.msExitFullscreen) { // IE/Edge document.msExitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else { console.log('Fullscreen API is not supported'); } }
监听全屏变化事件
你还可以监听全屏模式的变化,以便在用户退出全屏时执行某些操作。
document.addEventListener('fullscreenchange', () => { if (!document.fullscreenElement) { console.log('Exited fullscreen mode'); } else { console.log('Entered fullscreen mode'); } });
结合按钮或其他UI元素
退出全屏功能会与按钮或其他UI元素结合使用,以便用户可以在界面上轻松退出全屏模式。
<button id="exitFullscreenButton">Exit Fullscreen</button> <script> const exitButton = document.getElementById('exitFullscreenButton'); exitButton.addEventListener('click', () => { if (document.fullscreenElement) { document.exitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else { console.log('Document is not in fullscreen mode'); } }); </script>
处理全屏错误
在退出全屏时,可能会遇到各种错误,例如用户没有进入全屏模式或浏览器不支持全屏API,建议在调用退出全屏方法时使用 try-catch
块来捕获可能的错误。
try { if (document.fullscreenElement) { await document.exitFullscreen(); console.log('Exited fullscreen mode'); } else { console.log('Document is not in fullscreen mode'); } } catch (err) { console.error('Failed to exit fullscreen:', err); }
全屏API的浏览器支持
虽然大多数现代浏览器都支持全屏API,但不同浏览器的实现方式可能有所不同,以下是一些常见浏览器的全屏API前缀:
浏览器 | 前缀 | 方法 |
---|---|---|
Chrome, Safari, Opera | webkit | webkitRequestFullscreen , webkitExitFullscreen |
Firefox | moz | mozRequestFullScreen , mozCancelFullScreen |
Internet Explorer/Edge | ms | msRequestFullscreen , msExitFullscreen |
无前缀 | requestFullscreen , exitFullscreen |
示例代码
以下是一个完整的示例,展示了如何在HTML中实现退出全屏功能:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">Exit Fullscreen Example</title> </head> <body> <h1>Exit Fullscreen Example</h1> <button id="enterFullscreenButton">Enter Fullscreen</button> <button id="exitFullscreenButton">Exit Fullscreen</button> <video id="myVideo" width="600" controls> <source src="example.mp4" type="video/mp4"> Your browser does not support the video tag. </video> <script> const videoElement = document.getElementById('myVideo'); const enterButton = document.getElementById('enterFullscreenButton'); const exitButton = document.getElementById('exitFullscreenButton'); enterButton.addEventListener('click', () => { if (videoElement.requestFullscreen) { videoElement.requestFullscreen().then(() => { console.log('Entered fullscreen mode'); }).catch(err => { console.error('Failed to enter fullscreen:', err); }); } else if (videoElement.webkitRequestFullscreen) { // Safari, Chrome and Opera videoElement.webkitRequestFullscreen().then(() => { console.log('Entered fullscreen mode'); }).catch(err => { console.error('Failed to enter fullscreen:', err); }); } else if (videoElement.mozRequestFullScreen) { // Firefox videoElement.mozRequestFullScreen().then(() => { console.log('Entered fullscreen mode'); }).catch(err => { console.error('Failed to enter fullscreen:', err); }); } else if (videoElement.msRequestFullscreen) { // IE/Edge videoElement.msRequestFullscreen().then(() => { console.log('Entered fullscreen mode'); }).catch(err => { console.error('Failed to enter fullscreen:', err); }); } else { console.log('Fullscreen API is not supported'); } }); exitButton.addEventListener('click', () => { if (document.exitFullscreen) { document.exitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.webkitExitFullscreen) { // Safari, Chrome and Opera document.webkitExitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.mozCancelFullScreen) { // Firefox document.mozCancelFullScreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else if (document.msExitFullscreen) { // IE/Edge document.msExitFullscreen().then(() => { console.log('Exited fullscreen mode'); }).catch(err => { console.error('Failed to exit fullscreen:', err); }); } else { console.log('Fullscreen API is not supported'); } }); </script> </body> </html>
常见问题解答(FAQs)
Q1: 如何检测当前是否处于全屏模式?
A1: 你可以通过检查 document.fullscreenElement
或 document.webkitIsFullScreen
、document.mozFullScreen
、document.msFullscreenElement
来判断当前是否处于全屏模式,如果这些属性返回 true
,则表示当前处于全屏模式。
if (document.fullscreenElement || document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement) { console.log('Currently in fullscreen mode'); } else { console.log('Not in fullscreen mode'); }
Q2: 如何处理全屏模式下的键盘事件?
A2: 在全屏模式下,某些键盘事件(如 Esc
键)可能会被浏览器默认处理为退出全屏,如果你希望自定义这些事件的处理逻辑,可以在全屏模式下监听相应的事件,并阻止默认行为。
document.addEventListener('fullscreenchange', () => { if (document.fullscreenElement) { document.addEventListener('keydown', handleKeyDown); } else { document.removeEventListener('keydown', handleKeyDown); } }); function handleKeyDown(event) { if (event.key === 'Escape') { event.preventDefault(); // 阻止默认的退出全屏行为 // 自定义逻辑 console.log('Escape key pressed while in fullscreen'); } }