2016-12-06 208 views
0

全屏Web API允許全屏顯示元素對象。但全屏可以使用「Esc」鍵禁用。當按下「Esc」鍵時,我嘗試使用事件防止默認方法。即使全屏仍然被禁用。我希望我的網頁以全屏模式運行,因爲它是在線考試應用程序,我不希望用戶退出全屏並打開新的選項卡和其他應用程序。強制網頁以全屏模式運行

下面是代碼示例:

function openAppInFullScreen() { 
    let 
    rootEl = window.document.documentElement, 
    rfs = rootEl.requestFullScreen 
      || rootEl.msRequestFullscreen 
      || rootEl.webkitRequestFullScreen 
      || rootEl.mozRequestFullScreen; 
    rfs.call(rootEl); 
} 

function disableOutofAppActions(event) { 
    let 
    isF5orF11key = (event.keyCode === 116 || event.keyCode === 122), 
    isCtrlKeyOrEsc = event.ctrlKey || (event.keyCode === 27); 


    if (isF5orF11key || isCtrlKeyOrEsc) { 
    /* Block the event */ 
    event.preventDefault() 
    /*Show an warning alert*/ 
    } 
} 

window.addEventListener("click", openAppInFullScreen); 
window.addEventListener("keydown", disableOutofAppActions) 
+0

添加時間限制。如果可以的話,即使你這樣做(我敢肯定你不能,用戶選擇如何定位他們的窗口),你可以從字面上捕捉用戶 –

+0

,他們可以使用alt-tab(或無論他們的操作系統上有什麼快捷方式)都可以在窗口之間移動。或者按超級(Windows)鍵來召喚操作系統菜單。如果此應用只能在受控環境下的已知機器上運行,請考慮在機器上安裝Kiosk式操作系統,以限制對其他應用/服務的訪問。 – ADyson

+0

您需要使用瀏覽器配置解決此問題,而不是使用Web應用程序。 – Quentin

回答

0

我處理這樣的使用權限API,讓我們來檢測,如果當前瀏覽器標籤是有源或聚焦的情況。因此,如果用戶未查看我們的應用程序或嘗試打開其他應用程序,則可以觸發該事件。有關此結帳的更多信息,請參閱此答案。 https://stackoverflow.com/a/1060034/6610070

另外jQuery的模糊方法至少對我來說工作。 爲簡潔起見,我沒有添加事件回調函數的代碼。

$(window).onblur(alertOutOfAppAction) 
$(window).onfocus(removeOutOfAppActionAlert)