Javascript開啟瀏覽器全屏模式

前端空城師發表於2016-11-23

通常在某些情況下,我們需要讓瀏覽器開啟全屏模式,以便獲得更好的視覺體驗,先看下全屏模式簡單的幾個API。

瀏覽器預設繫結

非全屏模式下, document的F11按鍵繫結開啟全屏模式
全屏模式下, document的esc和F11 按鍵繫結關閉全屏模式

螢幕全屏模式改變事件

當成功進入全屏模式後, document會收到一個fullscreenchange 事件。 當退出全屏狀態後, document又會收到fullscreenchange 事件。

判斷當前是否處於全屏狀態

非標準:

標準:

開啟全屏模式

注意: requestFullscreen是規範的書寫模式( s是小寫), 但在Gecko核心中仍使用帶字首的大寫模式mozRequestFullScreen。

關閉全屏模式

全屏模式只能由手勢觸發

瞭解API後,假如我們監聽window.onload事件執行launchFullScreen方法,Chrome瀏覽器會提示“開啟全屏模式API只能由使用者手勢觸發”。

原因是瀏覽器採用安全的機制, 將這種強制全屏模式意為“惡意行為”, 一切非使用者主觀意願帶來的變化都是不允許的

因此如果你的應用有全屏需求,有兩種方案。
1.頁面初始化給使用者一個“F11開啟全屏” 的提示, 並且在延遲幾秒之後消失。
2.頁面設定一個全屏按鈕,單擊全屏按鈕進入全屏模式,並且隱藏按鈕(視覺效果最佳)。

對於第二種方案,需要監聽鍵盤事件:

具備了相容各種瀏覽器按鍵模式的監聽,但不知道keycode腫麼辦,112是哪個鍵?

字母和數字鍵的鍵碼值(keyCode)

按鍵 鍵碼 按鍵 鍵碼 按鍵 鍵碼 按鍵 鍵碼
A 65 J 74 S 83 1 49
B 66 K 75 T 84 2 50
C 67 L 76 U 85 3 51
D 68 M 77 V 86 4 52
E 69 N 78 W 87 5 53
F 70 O 79 X 88 6 54
G 71 P 80 Y 89 7 55
H 72 Q 81 Z 90 8 56
I 73 R 82 0 48 9 57

數字鍵盤上的鍵的鍵碼值(keyCode)

按鍵 鍵碼 按鍵 鍵碼
0 96 8 104
1 97 9 105
2 98 * 106
3 99 + 107
4 100 Enter 108
5 101 109
6 102 . 110
7 103 / 111

功能鍵鍵碼值(keyCode)

按鍵 鍵碼 按鍵 鍵碼
F1 112 F7 118
F2 113 F8 119
F3 114 F9 120
F4 115 F10 121
F5 116 F11 122
F6 117 F12 123

控制鍵鍵碼值(keyCode)

按鍵 鍵碼 按鍵 鍵碼 按鍵 鍵碼 按鍵 鍵碼
BackSpace 8 Esc 27 Right Arrow 39 -_ 189
Tab 9 Spacebar 32 Dw Arrow 40 .> 190
Clear 12 Page Up 33 Insert 45 /? 191
Enter 13 Page Down 34 Delete 46 `~ 192
Shift 16 End 35 Num Lock 144 [{ 219
Control 17 Home 36 ;: 186 \ 220
Alt 18 Left Arrow 37 =+ 187 ]} 221
Cape Lock 20 Up Arrow 38 ,< 188 ‘“ 222

避免使用非標準化的方法

非標準化的方法指的是進入草案前瀏覽器實現的一些方法,避免使用。
window.fullScreen(Firefox)
HTMLMediaElement.webkitDisplayingFullscreen
HTMLMediaElement.webkitEnterFullscreen
HTMLMediaElement.webkitExitFullscreen
HTMLMediaElement.webkitSupportsFullscreen

相關文章