js 实现全屏预览

1.开启全屏

function fullScreen() {
      // const element = this.$refs['fullScreen']
        const element = document.querySelector("#fullScreen")
      if (element.requestFullscreen) {
        element.requestFullscreen()
      } else if (element.mozRequestFullScreen) {
        element.mozRequestFullScreen()
      } else if (element.webkitRequestFullscreen) {
        element.webkitRequestFullscreen()
      } else if (element.msRequestFullscreen) {
        element.msRequestFullscreen()
      } else {
        console.log('当前浏览器不支持部分全屏!')
      }
    }

ele:要全屏的元素,可以是docdocument.body也可以是某一个div,但不能是docdocument
思路:
1.判断该浏览器是否具有requestFullscreen方法
2.有,则直接执行ele.requestFullscreen();没有则做浏览器兼容判断。

2.退出全屏

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()
        }
    }

退出全屏直接使用document调用exitFullscreen方法即可。

3.获取当前全屏的节点

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

document.fullscreenElement():获取当前全屏的元素。
假设id为 'fullScreen' 的Element当前为全屏状态则 document.querySelector("#fullScreen")===document.fullscreenElement

4.判断当前是否全屏

通过document.fullscreenElement属性是否为空来判断,对于webkit内核的浏览器,还可以通过document.webkitIsFullScreen属性来判断,以下为兼容写法:

function isFullScreen() {
   return !!(document.webkitIsFullScreen || getFullscreenElement())
}

5.判断当前文档是否能切换到全屏

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

注意事项:

1.document下没有requestFullscreen
2.requestFullscreen方法只能由用户触发,比如:在onload事件中不能触发
3.页面跳转需先退出全屏
4.进入全屏的元素,将脱离其父元素,所以可能导致之前某些css的失效
解决方案:使用 :full-screen伪类 为元素添加全屏时的样式(使用时为了兼容注意添加-webkit、-moz或-ms前缀)
5.一个元素A全屏后,其子元素要再全屏,需先让元素A退出全屏
6.在iframe中跨域时,无法开启全屏,只需在iframe标签中添加allowfullscreen="true"就可以了 。

参考文档

https://my.oschina.net/u/4392455/blog/4053139
https://blog.csdn.net/weixin_44070934/article/details/84972330
https://blog.csdn.net/qq_26604017/article/details/103123532

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容