JavaScript實(shí)現(xiàn)頁(yè)面全屏展示功能
最近做一個(gè)網(wǎng)頁(yè)項(xiàng)目,用戶(hù)要求可以全屏展示,進(jìn)入系統(tǒng)后隱藏地址欄,于是乎,經(jīng)過(guò)調(diào)研就選擇了全屏API,即便如此還是遇到了一些問(wèn)題,總結(jié)一下,寫(xiě)下此篇文章,以免以后再遇到相同的問(wèn)題。
在JavaScript中,實(shí)現(xiàn)頁(yè)面全屏展示主要依賴(lài)于HTML5的Fullscreen API,這是一個(gè)相對(duì)較新的技術(shù),因此在舊版本的瀏覽器上可能不受支持,現(xiàn)代瀏覽器支出如下。

檢查瀏覽器是否支持Fullscreen API
在嘗試使用Fullscreen API之前,最好先檢查瀏覽器是否支持它。雖然現(xiàn)代瀏覽器普遍支持,但檢查總是好的做法。
if (document.fullscreenEnabled ||
document.mozFullScreenEnabled ||
document.webkitFullscreenEnabled ||
document.msFullscreenEnabled) {
// 支持全屏
} else {
// 不支持全屏
}
全屏模式
獲取Element節(jié)點(diǎn),然后使用requestFullscreen方法,可以使得這個(gè)節(jié)點(diǎn)全屏,全屏模式的具體實(shí)現(xiàn)可能因?yàn)g覽器而異,所以要做不同瀏覽器處理。
const openFullScreen = () => {
const full = document.getElementById('fullscreen')
if (full.RequestFullScreen) {
full.RequestFullScreen()
} else if (full.mozRequestFullScreen) {
full.mozRequestFullScreen()
} else if (full.webkitRequestFullScreen) {
full.webkitRequestFullScreen()
} else if (full.msRequestFullscreen) {
full.msRequestFullscreen()
}
}
退出全屏模式
退出全屏模式可以通過(guò)調(diào)用document.exitFullscreen()方法實(shí)現(xiàn)。這個(gè)方法會(huì)嘗試讓當(dāng)前處于全屏模式的元素退出全屏。用戶(hù)手動(dòng)按下ESC鍵,也可以退出全屏鍵。
const exitFullScreen = () => {
if (document.exitFullScreen) {
document.exitFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
獲取全屏元素
document.fullscreenElement屬性返回正處于全屏狀態(tài)的Element節(jié)點(diǎn),如果當(dāng)前沒(méi)有節(jié)點(diǎn)處于全屏狀態(tài),則返回null。可以通過(guò)此方法判斷是否在全屏狀態(tài)。
const fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
注意事項(xiàng)
想要全屏的元素都應(yīng)該在這個(gè)Element節(jié)點(diǎn)下面,否則的話全屏?xí)r不會(huì)展示。如下圖的html結(jié)構(gòu),點(diǎn)擊單開(kāi)彈框依然無(wú)法在全屏模式下看到彈窗,推出全屏?xí)r會(huì)看到彈窗已經(jīng)出現(xiàn)。如果想避免這種莫名的問(wèn)題,可以把document.getElementById('fullscreen') 改成document.documentElement,讓整個(gè)HTML全屏。

requestFullscreen方法只能是用戶(hù)主動(dòng)觸發(fā)才可以,如果想在頁(yè)面加載時(shí)通過(guò)js調(diào)用方法或者是觸發(fā)click事件觸發(fā),我勸你還是放棄吧,在控制臺(tái)出現(xiàn)如下警告:

刷新頁(yè)面也會(huì)自動(dòng)退出全屏模式;
如果想改變?nèi)翣顟B(tài)時(shí)的樣式,首先可以在全屏?xí)r添加一個(gè)calss,此外也可以使用:full-screen偽類(lèi),大部分瀏覽器都支持,檢查全屏?xí)r元素,也是有使用:full-screen偽類(lèi)的。

到此這篇關(guān)于JavaScript實(shí)現(xiàn)頁(yè)面全屏展示功能的文章就介紹到這了,更多相關(guān)JavaScript頁(yè)面全屏展示內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
原生js模擬淘寶購(gòu)物車(chē)項(xiàng)目實(shí)戰(zhàn)
這篇文章主要向大家推薦了一個(gè)原生js模擬淘寶購(gòu)物車(chē)項(xiàng)目實(shí)戰(zhàn),包括商品的單選、全選、刪除、修改數(shù)量、價(jià)格計(jì)算、數(shù)目計(jì)算、預(yù)覽等功能的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2015-11-11
javascript制作loading動(dòng)畫(huà)效果 loading效果
項(xiàng)目中多處要給ajax提交的時(shí)候增加等待動(dòng)畫(huà)效果,所以就寫(xiě)了一個(gè)簡(jiǎn)單的通用js方法,大家參考使用吧2014-01-01
js頁(yè)面引導(dǎo)頁(yè)的實(shí)現(xiàn)思路總結(jié)
在同學(xué)們使用某些網(wǎng)站的新版本頁(yè)面的時(shí)候,經(jīng)常會(huì)出現(xiàn)一個(gè)類(lèi)似于新手引導(dǎo)一樣的效果,本文主要介紹了js頁(yè)面引導(dǎo)頁(yè)的實(shí)現(xiàn)思路總結(jié),感興趣的可以了解一下2023-04-04
TypeScript創(chuàng)建一個(gè)簡(jiǎn)單Web應(yīng)用
這篇文章主要為大家介紹了TypeScript創(chuàng)建一個(gè)簡(jiǎn)單Web應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
javascript學(xué)習(xí)小結(jié)之prototype
本系列博文主要談一些在 javascript 使用中經(jīng)常會(huì)混淆的高級(jí)應(yīng)用,包括: prototype, closure, scope, this關(guān)鍵字. 對(duì)于一個(gè)需要提高自己javascript水平的程序員,這些都是必須要掌握的,本節(jié)主要介紹prototype.2015-12-12
JavaScript實(shí)現(xiàn)與web通信的方法詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)與web通信的方法詳解,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

