Web全屏模式

MDN:全屏 API 爲使用用戶的整個屏幕展示網絡內容提供了一種簡單的方式。這種API讓你能夠簡單地控制瀏覽器,使得一個元素與其子元素,若是存在的話,能夠佔據整個屏幕,並在此期間,從屏幕上隱藏全部的瀏覽器用戶界面以及其餘應用。javascript

概覽

  • document.fullscreen
  • document.fullscreenElement
  • document.fullscreenEnabled
  • elem.requestFullscreen
  • document.exitFullscreen
  • document.onfullscreenchange
  • document.onfullscreenerror

屬性

document.fullscreen

用於檢測當前文檔是否處於全屏模式,返回值爲布爾類型css

document.fullscreenElement

當前激活全屏模式的元素html

document.fullscreenEnabled

當前文檔是否支持全屏java

方法

請求全屏模式

一個全屏的請求應該由一個具體的元素髮出,以video元素爲例,請求方式以下:web

<video controls id="video">
  <source src="somevideo.webm"></source>
  <source src="somevideo.mp4"></source>
</video>
複製代碼
var elem = document.getElementById("video");
elem.addEventListener('click',function () {
	if (elem.requestFullscreen) {
    elem.requestFullscreen();
  }
});
複製代碼

MDN:全屏請求必須在事件處理函數中調用,不然將會被拒絕。瀏覽器

退出全屏模式

  • 方式一:按 ESCF11 鍵退出全屏
  • 方式二:[keydown event] + document.exitFullscreen自定義全屏退出邏輯
// 按Enter建退出全屏
document.addEventListener("keydown", function(e) {
  if (e.keyCode == 13) {
    document.exitFullscreen();
  }
}, false);
複製代碼

注意:exitFullscreen方法只存在於document對象上,而不存在與elem網絡

事件

onfullscreenchange

onfullscreenchange事件觸發的時刻的有2個:一是進入全屏時,二是退出全屏時。也就是說若是全屏模式的狀態發生了改變,那麼onfullscreenchange事件就會被觸發ide

document.onfullscreenchange = function ( event ) {
  console.log("全屏模式狀態改變");
};
複製代碼

onfullscreenerror

當嘗試在不支持全屏模式的元素上請求全屏時,則會發生錯誤,這個錯誤會觸發onfullscreenerror事件函數

document.onfullscreenerror = function ( event ) { 
  console.log("全屏模式失敗");
};
複製代碼

驗證onfullscreenerror事件最簡單的方式就是:在事件監聽器以外發起全屏請求。 由於**全屏請求必須在事件處理函數中調用,不然將會被拒絕。**在拒絕的同時會產生一個錯誤,這個錯誤會觸發onfullscreenerror事件ui

document.onfullscreenerror = function ( event ) { 
  console.log("全屏模式失敗");
}; 

// requestFullscreen()將會失敗,由於它在事件處理器以外
document.documentElement.requestFullscreen();
複製代碼

全屏樣式

Gecko會自動爲進入全屏模式的元素添加額外樣式:width: 100%; height: 100%l; ,目的是使其鋪滿整個屏幕;而webkit沒有這種默認行爲,因此須要咱們手動補充這個樣式

#video:-webkit-full-screen {
  width: 100%;
  height: 100%;
}
複製代碼

兼容

PC端

兼容性-PC端

移動端

兼容性-移動端

前綴

表1

前綴1

表2

前綴2

結語

本文絕大部分參考MDN文檔,目的是整理Web全屏Api,非原創文章

原文地址:www.guoyunfeng.com/2018/08/15/…

相關文章
相關標籤/搜索