1. 程式人生 > >guacamole谷歌瀏覽器全屏時白屏問題

guacamole谷歌瀏覽器全屏時白屏問題

最近專案需要使用web通過vnc連線虛擬機器,簡單調研一番後決定用apache guacamole。

開發過程中需要實現全屏功能,但F11被guacamole攔截了,無法全屏,唯有使用js來做,一開始用以下方法:

function fullScreen() {
	    var docElm = document.documentElement;
	    //W3C
	    if (docElm.requestFullscreen) {
	        docElm.requestFullscreen();
	    }
	    //FireFox
	    else if (docElm.mozRequestFullScreen) {
	        docElm.mozRequestFullScreen();
	    }
	    //Chrome等
	    else if (docElm.webkitRequestFullScreen) {
	        docElm.webkitRequestFullScreen();
	    }
	    //IE11
	    else if (docElm.msRequestFullscreen) {
	        docElm.msRequestFullscreen();
	    }
}
使用chrome測試發現全屏時候白屏了,firefox則沒有這個問題。

後來使用chrome,先訪問左邊的頁面,按下F11,全屏了,然後Ctrl+PageDown切回到虛擬機器頁面,沒有白屏。

開始意識到應該是js問題,於是繼續在網上找解決方法,後來找到個帖子,https://stackoverflow.com/questions/3900701/onclick-go-full-screen,裡面有個外國人講得停詳細的,試了一下他的程式碼,問題解決了。

function requestFullScreen() {

  var el = document.body;

  // Supports most browsers and their versions.
  var requestMethod = el.requestFullScreen || el.webkitRequestFullScreen 
  || el.mozRequestFullScreen || el.msRequestFullScreen;

  if (requestMethod) {

    // Native full screen.
    requestMethod.call(el);

  } else if (typeof window.ActiveXObject !== "undefined") {

    // Older IE.
    var wscript = new ActiveXObject("WScript.Shell");

    if (wscript !== null) {
      wscript.SendKeys("{F11}");
    }
  }
}

問題原因不知道,自己不擅長js,希望能拋磚引玉,引出大神來指點迷津。