首页 > 其他分享 >JS 全屏和退出全屏--requestFullScreen详解及兼容代码

JS 全屏和退出全屏--requestFullScreen详解及兼容代码

时间:2023-10-08 11:34:38浏览次数:50  
标签:function JS -- ele else requestFullscreen document 全屏

浏览器全屏实现方式

1.利用h5的 requestFullScreen

2.摁F11实现全屏效果

requestFullscreen全屏具体实现

1.进入全屏

 

 
  1.   function full(ele) {
  2.   if (ele.requestFullscreen) {
  3.   ele.requestFullscreen();
  4.   } else if (ele.mozRequestFullScreen) {
  5.   ele.mozRequestFullScreen();
  6.   } else if (ele.webkitRequestFullscreen) {
  7.   ele.webkitRequestFullscreen();
  8.   } else if (ele.msRequestFullscreen) {
  9.   ele.msRequestFullscreen();
  10.   }
  11.   }
 
 

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

2.exitFullScreen退出全屏

 

 
  1.   function exitFullscreen() {
  2.   if(document.exitFullScreen) {
  3.   document.exitFullScreen();
  4.   } else if(document.mozCancelFullScreen) {
  5.   document.mozCancelFullScreen();
  6.   } else if(document.webkitExitFullscreen) {
  7.   document.webkitExitFullscreen();
  8.   } else if(document.msExitFullscreen) {
  9.   document.msExitFullscreen();
  10.   }
  11.   }
 
 

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

3.获取当前全屏的节点

 

 
  1.   function getFullscreenElement() {
  2.   return (
  3.   document.fullscreenElement ||
  4.   document.mozFullScreenElement ||
  5.   document.msFullScreenElement ||
  6.   document.webkitFullscreenElement||null
  7.   );
  8.   }
 
 

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

4.判断当前是否全屏

 

 
  1.   function isFullScreen() {
  2.   return !! (
  3.   document.fullscreen ||
  4.   document.mozFullScreen ||
  5.   document.webkitIsFullScreen ||
  6.   document.webkitFullScreen ||
  7.   document.msFullScreen
  8.   );
  9.   }
 
 

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

 

 
  1.   function isFullscreenEnabled() {
  2.   return (
  3.   document.fullscreenEnabled ||
  4.   document.mozFullScreenEnabled ||
  5.   document.webkitFullscreenEnabled ||
  6.   document.msFullscreenEnabled
  7.   );
  8.   }
 
 

注意事项:

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




标签:function,JS,--,ele,else,requestFullscreen,document,全屏
From: https://www.cnblogs.com/lhb1005/p/17748480.html

相关文章

  • Springboot中的context-path作用
    首先context-path用于构成url,我们在配置文件的时候server:servlet:context-path:/test之后在本地访问端口8080时(此处拿knife4j举列)本来要访问的是:localhost:8080/doc.html但是现在由于加了context-path,该路径便变为了:localhost:8080/tset/doc.html......
  • 【webapp】JSP工作原理和过程
    JSP编译:当客户端请求访问一个JSP页面时,Web服务器首先检查是否已经编译过该JSP页面。如果没有编译过或者源文件已更改,服务器会将JSP文件编译成一个Servlet源文件。Servlet编译:编译后的Servlet源文件进一步被编译成Java字节码文件,这个过程由服务器的JSP引擎完......
  • 94基于java的智能物流管理系统设计与实现(含配套lun文,可参考做毕设)
    本章节给大家带来一个基于java智能物流管理系统设计与实现,可适用于校园物流管理系统,物流配送系统,快递物流管理,物流追踪系统,物流系统,物流运输系统,javaweb物流系统,springboot物流管理系统,javaweb智能物流系统等等;项目背景随着互联网技术的快速发展,网络时代的到来,网络信息也将会......
  • Steam流对对象中的某一个字段进行去重
    在去重时,我们可以在sql中用distinct进行去重,但在我的实际使用中,发现该去重方式并不能对多条数据的某一条数据进行去重,于是在上网查证的时候,发现可以用groupby进行分组实现去重的操作,但是这样任然不能实现单一字段去重,于是便想起之前看到的操作。先把要查询的字段以不去重的方式进......
  • [转]oracle listener.ora中PLSExtPro 和ExtProc的作用(过时组件,官方建议删除以避免漏
    默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它,可以直接从listener.ora中将这项移除,因为对ExtProc已经有多种攻击手段了,在不使用外部程序时,oracle也是建议删除的。PLSEx......
  • IDEA 的文件夹的类型说明
         通过IDEA File菜单 -> ProjectStructure-Modules,或者右键MarkDirectoryas可以找到这五种类型。Sources一般用于标注类似src这种可编译目录。有时候我们不单单项目的src目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目......
  • 网络规划设计师真题解析--独立磁盘冗余阵列(二)(容量的计算)
    假如有3块容量是160G的硬盘做RAID5阵列,则这个RADI5的容量是(1);而如果有2块160G的盘和1块80G的盘,此时RAID5的容量是(2)。(1)A.320G    B.160G     C.80G     D.40G(2)A.40G     B.80G     C.160G    D.200G答案:(1)A (2)C解析:常见的RAID......
  • 聊聊JDK19特性之虚拟线程 | 京东云技术团队
    1.前言在读《深入理解JVM虚拟机》这本书前两章的时候整理了JDK从1.0到最新版本发展史,其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性,在调研JDK19新增特性的时候了解到了虚拟线程这个概念,于是对虚拟线程进行学习整理内容如下。2.虚拟线程介绍?虚拟线程(VirtualTh......
  • 94基于java的智能物流管理系统设计与实现(含配套lun文,可参考做bi设)
    本章节给大家带来一个基于java智能物流管理系统设计与实现,可适用于校园物流管理系统,物流配送系统,快递物流管理,物流追踪系统,物流系统,物流运输系统,javaweb物流系统,springboot物流管理系统,javaweb智能物流系统等等;项目背景随着互联网技术的快速发展,网络时代的到来,网络信息也将会......
  • 【后台体验】运营后台订单详情设计分享 | 京东云技术团队
    目前大部分运营后台的设计和开发都是由后端同学来做,产品经理对界面标准要求并不高,大多数都是能用就行。其实,只要花些心思,运营后台也可以做的很美,提升运营同学的日常使用体验。下面跟大家分享两个我做的运营后台中的订单详情设计1.共享图书平台运营后台订单详情设计心路历程:产品经......