JS控制浏览器全屏

由于工作的需要,需要对页面进行投屏操作,这时为了达到更好的效果,浏览器全屏显示类似F12的效果。
HTML5提供了操作浏览器全屏的API,目前google chrome 15 +, safri5.1+,firfox10+,IE1能够很好的支持该属性;低版本的IE可以通过ActiveX插件实现;
google chrome 15 +, safri5.1+,firfox10+,IE1实现方式:
打开全屏:

function fullScreen() {

  var el = document.documentElement;

  var rfs = el.requestFullScreen || el.webkitRequestFullScreen || 

      el.mozRequestFullScreen || el.msRequestFullScreen;

  if(typeof rfs != "undefined" && rfs) {

    rfs.call(el);

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

    //for IE,这里其实就是模拟了按下键盘的F11,使浏览器全屏

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

    if(wscript != null) {

        wscript.SendKeys("{F11}");

    }

  }
}

退出全屏:

function exitFull() {
  // 判断各种浏览器,找到正确的方法
  var exitMethod = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.webkitExitFullscreen; 
  if (exitMethod) {
    exitMethod.call(document);
  }
  else if (typeof window.ActiveXObject !== "undefined") {//for Internet Explorer
    var wscript = new ActiveXObject("WScript.Shell");
    if (wscript !== null) {
      wscript.SendKeys("{F11}");
    }
  }
}

注意事项:
1,如果是低版本的在IE11以下,通过ActiveXObject ,首次加载页面的时候会出现是否加载AxtiveX控件的提示,这里会有一点不太友好,如果要避免这样的提示,只能去选项/设置面板中修改IE关于activex 控件的配置。没办法,这就是为什么这么多人讨厌IE的原因,但是IE还素有一个好处的,下面我们会讲到。
2,chrome等高版本浏览器可以通过调用Html5提供的API实现全屏和退出全屏,但是这个动作必须手动出发,例如通过点击事件:

$(document).onclick(function(){
    fullScreen();
})

这样是可以实现,但是如果我们需要在不手动触发的情况下通过js代码实现全屏API提供的方法就无法实现,如:

$(function(){
   fullScreen();
})
//或者
$("document").trigger('click');

上面这样浏览会报警告,提示:’Failed to execute ‘requestFullScreen’ on ‘Element’: API can only be initiated by a user gesture’,意思大概就是该方法只能通过手势出发。但是低版本的IE通过 wscript.SendKeys(“{F11}”)是可以实现的。
所以IE是又让人爱又让人恨,当然恨多一点。

你可能感兴趣的:(javascript)