当前位置: 首页 > news >正文

JS封装网页进入/退出全屏功能,兼容各大主流浏览器

1、演示

 2、封装进入全屏函数

mozRequestFullScreen:兼容Firefox

webkitRequestFullscreen:兼容 Chrome、Safari、Opera

msRequestFullscreen:兼容:IE/Edge

const enter = () => {const element = document.documentElementif (element.requestFullscreen) {element.requestFullscreen()} else if (element.mozRequestFullScreen) {element.mozRequestFullScreen()} else if (element.webkitRequestFullscreen) {element.webkitRequestFullscreen()} else if (element.msRequestFullscreen) {element.msRequestFullscreen()}}

依次判断当前页面或浏览器是否支持进入全屏模式以达到兼容效果

3、封装退出全屏函数

mozCancelFullScreen:兼容Firefox
webkitExitFullscreen: 兼容 Chrome、Safari、Opera
msExitFullscreen:兼容:IE/Edge

    const exit = () => {if (document.exitFullscreen) {document.exitFullscreen()} else if (document.mozCancelFullScreen) {document.mozCancelFullScreen()} else if (document.webkitExitFullscreen) {document.webkitExitFullscreen()} else if (document.msExitFullscreen) {document.msExitFullscreen()}}

依次判断当前页面或浏览器是否支持退出全屏模式以达到兼容效果

4、封装判断当前处于全屏的元素

mozFullScreenElement:兼容Firefox
webkitFullScreenElement: 兼容 Chrome、Safari、Opera
msFullScreenElement:兼容:IE/Edge

    const fullEle = () => {return document.fullscreenElement || document.mozFullScreenElement || document.msFullScreenElement || document.webkitFullScreenElement || null}

5、封装判断当前是否处于全屏,需借助第4步

    const isFull = () => {return !!fullEle()}

6、封装全屏/退出全屏 进行切换的函数

    const toggle = () => {isFull() ? exit() : enter()}

7、完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>div {padding: 10px;background-color: #eee;width: 300px;}button {background-color: #266fff;color: #fff;border: 0;width: 120px;height: 30px;}</style></head><body><button>进入/退出全屏</button><div>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dolorem veniam ullam totam quod ut, reprehenderit exercitationem sunt consequatur ipsacum suscipit cumque, eaque amet illum itaque unde vel adipisci aperiam expedita voluptatibus minima? Consequuntur amet magnam eaque vitaedebitis ab obcaecati adipisci modi earum quod, nihil alias nisi ipsum ipsam reiciendis unde architecto dolores ea expedita. Voluptas</div></body><script>const btn = document.querySelector('button')btn.onclick = () => {toggle()}// 进入全屏const enter = () => {const element = document.documentElementif (element.requestFullscreen) {element.requestFullscreen()} else if (element.mozRequestFullScreen) {element.mozRequestFullScreen()} else if (element.webkitRequestFullscreen) {element.webkitRequestFullscreen()} else if (element.msRequestFullscreen) {element.msRequestFullscreen()}}// 退出全屏const exit = () => {if (document.exitFullscreen) {document.exitFullscreen()} else if (document.mozCancelFullScreen) {document.mozCancelFullScreen()} else if (document.webkitExitFullscreen) {document.webkitExitFullscreen()} else if (document.msExitFullscreen) {document.msExitFullscreen()}}// 当前处于全屏的元素const fullEle = () => {return document.fullscreenElement || document.mozFullScreenElement || document.msFullScreenElement || document.webkitFullScreenElement || null}// 当前是否处于全屏状态const isFull = () => {return !!fullEle()}const toggle = () => {isFull() ? exit() : enter()}</script>
</html>
http://www.lryc.cn/news/330891.html

相关文章:

  • el-table的复选框勾选整行变色
  • 一步一步写线程之八线程池的完善之二数据结构封装
  • go连接数据库(原生)
  • 【C语言】2048小游戏【附源码】
  • 部署项目遇到的各种问题总结
  • JavaSE:抽象类和接口
  • 发票是扫码验真好,还是OCR后进行验真好?
  • 【AIGC调研系列】AIGC+Jmeter实现接口自动化测试脚本生成
  • 前端|babel升级
  • 【微服务】spring状态机模式使用详解
  • 【算法刷题day14】Leetcode:144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历
  • mysql闲谈
  • 物联网学习1、什么是 MQTT?
  • 【机器学习】数据探索(Data Exploration)---数据质量和数据特征分析
  • 软件测试(一)--简介+主流技能+分类+模型+流程
  • 技术引领,策略升级:腾讯云与你共探数字金融新篇章
  • 数据库-root密码丢失的重置方案(win11环境)
  • 免试生常问的一些问题汇总---专升本学习篇
  • FPGA的就业前景
  • 7.阻塞模式与非阻塞模式
  • Unity类银河恶魔城学习记录11-10 p112 Items drop源代码
  • EasyExcel 模板导出excel、合并单元格及单元格样式设置。 Freemarker导出word 合并单元格
  • 炫我科技:云渲染领域的佼佼者
  • VsCode正确解决vue3+Eslint+prettier+Vetur的配置冲突
  • 计算机网络—VLAN 间路由配置
  • 微服务篇-C 深入理解第一代微服务(SpringCloud)_VII 深入理解Swagger接口文档可视化管理工具
  • 区块链的应用领域:重塑未来的信任机制
  • 怎么在循环List的时候删除List的元素
  • SpringBoot+thymeleaf完成视频记忆播放功能
  • ES 7.12官网阅读-ILM(index lifecycle management)