2016-08-13 76 views
0

我試圖用全屏API打開一個新頁面(使用不同的佈局)。當用戶點擊開放課程鏈接時,適當的頁面/佈局將以全屏模式打開。全屏API和外部鏈接

我使用這個功能火災全屏模式:

// Find the right method, call on correct element 
function launchIntoFullscreen(element) { 
    if(element.requestFullscreen) { 
    element.requestFullscreen(); 
    } else if(element.mozRequestFullScreen) { 
    element.mozRequestFullScreen(); 
    } else if(element.webkitRequestFullscreen) { 
    element.webkitRequestFullscreen(); 
    } else if(element.msRequestFullscreen) { 
    element.msRequestFullscreen(); 
    } 
} 

// Launch fullscreen for browsers that support it! 
launchIntoFullscreen(document.documentElement); // the whole page 

的問題是,該API只接受打開同一個頁面或在全屏模式下隱藏的元素。我知道這是預期的行爲。

我需要在全屏模式下打開不同的頁面,當用戶點擊正確的鏈接。

是否有任何解決方法使它成爲可能?

回答

1

這是我目前用來切換全屏模式。

function fullscreen() { 
    var isInFullScreen = (document.fullscreenElement && document.fullscreenElement !== null) || 
     (document.webkitFullscreenElement && document.webkitFullscreenElement !== null) || 
     (document.mozFullScreenElement && document.mozFullScreenElement !== null) || 
     (document.msFullscreenElement && document.msFullscreenElement !== null); 
    if (!isInFullScreen) { 
     if (document.documentElement.requestFullscreen) { 
      document.documentElement.requestFullscreen(); 
     } else if (document.documentElement.mozRequestFullScreen) { 
      document.documentElement.mozRequestFullScreen(); 
     } else if (document.documentElement.webkitRequestFullScreen) { 
      document.documentElement.webkitRequestFullScreen(); 
     } else if (document.documentElement.msRequestFullscreen) { 
      document.documentElement.msRequestFullscreen(); 
     } 
    } else { 
     if (document.exitFullscreen) { 
      document.exitFullscreen(); 
     } else if (document.webkitExitFullscreen) { 
      document.webkitExitFullscreen(); 
     } else if (document.mozCancelFullScreen) { 
      document.mozCancelFullScreen(); 
     } else if (document.msExitFullscreen) { 
      document.msExitFullscreen(); 
     } 
    } 
} 

由於瀏覽器安全性限制(因爲您注意到),您無法在全屏中啓動新頁面。但是,您可以全屏打開.NET或Java應用程序。

一個建議嘗試繞過瀏覽器安全,將提供一個插件,將與您的網頁一起使用,將其功能擴展到用戶桌面。您也可以嘗試更低級別的事件掛鉤或嘗試模擬它們(例如,僞造「點擊」硬件事件)。如果需要,可以使用其他語言來輔助,如Flash,Java或.NET。

希望這是足夠的信息,讓齒輪滾動和解決這個問題。我相信你可以理解爲什麼這是瀏覽器安全性的一部分,但是繞過使用可擴展性的可能性也是存在的,因此可以說是一種非常重要的因素。如果他們真的希望保持瀏覽器的安全,那麼他們就沒有選擇自動下載或自動運行的東西,並且javascript無法使用UI阻止對話框或播放音頻進行垃圾郵件 - 等等。但我離題了。在「瀏覽器安全」的幌子下使用這個功能是一個非常弱的理由,因爲有更多的麻煩問題。