全屏和退出全屏

401 阅读1分钟

1 . 浏览器全屏的实现方式?

  • 利用h5的 requestFullScreen

  • 摁F11实现全屏效果

2 . ### requestFullscreen全屏具体实现

2 . 1 进入全屏:

function full(ele) {
      if (ele.requestFullscreen) {
          ele.requestFullscreen();
      } else if (ele.mozRequestFullScreen) {
          ele.mozRequestFullScreen();
      } else if (ele.webkitRequestFullscreen) {
          ele.webkitRequestFullscreen();
      } else if (ele.msRequestFullscreen) {
          ele.msRequestFullscreen();
      }
}

上述代码为,兼容其他浏览器,因为不同浏览器内置的API不一样

注:ele:要全屏的元素,可以是document.body也可以是某一个div

2 . 2 .exitFullScreen退出全屏

function exitFullscreen() {
    if(document.exitFullScreen) {
        document.exitFullScreen();
    } else if(document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
    } else if(document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
    } else if(document.msExitFullscreen) {
        document.msExitFullscreen();
    }
}

2 . 3 获取当前全屏的节点:

  • document.fullscreenElement()

不同浏览器获取方法不一样 ,所以可以写在一个自定义的获取函数里面。

function getFullscreenElement() {
    return (        
        document.fullscreenElement ||
        document.mozFullScreenElement ||
        document.msFullScreenElement ||
        document.webkitFullscreenElement||null
    );
}

2 . 4 判断当前是否全屏:

function isFullScreen() {
  return  !! (
      document.fullscreen || 
      document.mozFullScreen ||                         
      document.webkitIsFullScreen ||       
      document.webkitFullScreen || 
      document.msFullScreen 
   );
}

2 . 5 判断当前文档能否进入全屏?

function isFullscreenEnabled() {
    return  (
        document.fullscreenEnabled ||
        document.mozFullScreenEnabled ||
        document.webkitFullscreenEnabled ||
        document.msFullscreenEnabled
    );
}

3 . 注意事项:

  • document下没有requestFullscreen

  • requestFullscreen方法只能由用户触发,绑定在元素节点上面

  • 页面跳转需先退出全屏

  • 进入全屏的元素,将脱离其父元素,所以可能导致之前某些css的失效

    • 解决方法: 使用 :full-screen伪类 为元素添加全屏时的样式(使用时为了兼容注意添加-webkit、-moz或-ms前缀)
  • 一个元素A全屏后,其子元素要再全屏,需先让元素A退出全屏