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

【JS】封装针对dom节点的全屏查看功能

封装一个函数,可以使某个dom元素进入全屏模式

<body><div id="container"><h2>这是一个h2</h2><p>这是一个p</p><button id="btn" onclick="">进入/退出全屏</button></div><script>btn.onclick = function () {// 全屏、关闭全屏}</script>
</body>

js

// 进入全屏
function enter(ele) {if (ele.requestFullScreen) {ele.requestFullScreen()} else if (ele.mozRequestFullScreen) {ele.mozRequestFullScreen()} else if (ele.webkitRequestFullScreen) {ele.webkitRequestFullScreen()} else if (ele.msRequestFullScreen) {ele.msRequestFullScreen()}
}
// 退出全屏
function exit() {if (document.exitFullScreen) {document.exitFullScreen()} else if (document.mozCancelFullScreen) {document.mozCancelFullScreen()} else if (document.webkitCancelFullScreen) {document.webkitCancelFullScreen()} else if (document.msExitFullScreen) {document.msExitFullScreen()}
}
// 当前处于全屏的元素
function fullEle() {return (document.fullscreenElement ||document.mozFullScreenElement ||document.webkitFullscreenElement ||document.msFullscreenElement ||null)
}
// 当前是否处于全屏状态
function isFull() {return !!fullEle()
}

优化js:提取方法名,由于浏览器能使用什么方法在初次运行时就已经确定,所以无需额外判断

function getPropertyName(names, target) {return names.find((name) => name in target)
}const enterFullScreenName = getPropertyName(["requestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullScreen",],document.documentElement
)
// 进入全屏
function enter(ele) {enterFullScreenName && ele[enterFullScreenName]()
}const exitFullScreenName = getPropertyName(["exitFullscreen","webkitExitFullScreen","mozCancelFullScreen","msExitFullScreen",],document
)
// 退出全屏
function exit() {exitFullScreenName && document[exitFullScreenName]()
}const fullEleName = getPropertyName(["fullscreenElement", "webkitFullscreenElement", "mozFullScreenElement"],document
)
// 当前处于全屏的元素
function fullEle() {return document[fullEleName] || null
}
// 当前是否处于全屏状态
function isFull() {return !!fullEle()
}function toggle(ele) {isFull() ? exit() : enter(ele)
}

整体代码

<!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>#container {background-color: white;}</style>
</head><body><div id="container"><h2>这是一个h2</h2><p>这是一个p</p><button id="btn" onclick="">进入/退出全屏</button></div><script>function getPropertyName(names, target) {return names.find((name) => name in target)}const enterFullScreenName = getPropertyName(["requestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullScreen",],document.documentElement)// 进入全屏function enter(ele) {enterFullScreenName && ele[enterFullScreenName]()}const exitFullScreenName = getPropertyName(["exitFullscreen","webkitExitFullScreen","mozCancelFullScreen","msExitFullScreen",],document)// 退出全屏function exit() {exitFullScreenName && document[exitFullScreenName]()}const fullEleName = getPropertyName(["fullscreenElement", "webkitFullscreenElement", "mozFullScreenElement"],document)// 当前处于全屏的元素function fullEle() {return document[fullEleName] || null}// 当前是否处于全屏状态function isFull() {return !!fullEle()}function toggle(ele) {isFull() ? exit() : enter(ele)}btn.onclick = function () {toggle(container)}</script>
</body></html>

http://www.mrgr.cn/news/38761.html

相关文章:

  • 阿布量化:基于 Python 的量化交易框架
  • 嵌入式学习——进程间通信方式(4)—— 消息队列
  • Ruby 多线程
  • 基于baidu的云函数实现隐藏c2真实地址
  • 助农扶贫微信小程序+ssm论文ppt源码调试讲解
  • 服务器分类极简理解
  • Kafka快速实战与基本原理详解
  • 【数据结构】链表(2)
  • Performance Analysis Kit简介
  • (undone) 阅读 MapReduce 论文笔记
  • 【JUC并发编程系列】深入理解Java并发机制:深入剖析AbstractQueuedSynchronizer的底层机制(九、AQS底层实现原理)
  • 【图像生成大模型imagen】细节逼真富有创造力
  • javaScript中如何实现函数缓存,案例解析
  • 【一篇文章理解Java中多级缓存的设计与实现】
  • 「漏洞复现」九块九付费进群系统 wxselect SQL注入漏洞
  • 华为OD机试真题---猜字谜
  • 深入理解C语言编译器优化
  • 机器学习与深度学习的技术比较
  • Java中的数据合并与拆分:使用Stream API实现数据的灵活处理
  • 大厂面试:2024年虾皮Java开发面试题及参考答案(5万字长文)