当前位置:   article > 正文

js实现完整封装全屏功能,兼容多个浏览器

js实现完整封装全屏功能,兼容多个浏览器
支持全屏的api
  1.    浏览器是否支持全屏模式:document.fullscreenEnabled
  2.    使元素进入全屏模式:Element.requestFullscreen()
  3.    退出全屏:document.exitFullscreen()
  4.    检查当前是否有节点处于全屏状态:document.fullscreenElement
  5.    进入全屏/离开全屏,触发事件:document.fullscreenchange
  6.    无法进入全屏时触发: document.fullscreenerror

浏览器前缀:

目前并不是所有的浏览器都实现了API的无前缀版本,所以我们需要针对不同浏览器,做一下API的兼容:

实现代码:
  1. function getPropertyName(names, target) {
  2. return names.find(name => name in target)
  3. }
  4. const enterFullScreenName = getPropertyName([
  5. 'requestFullscreen',
  6. 'mozRequestFullScreen',
  7. 'webkitRequestFullscreen',
  8. 'msRequestFullscreen'
  9. ], document.documentElement)
  10. // 进入全屏
  11. export function enter(ele) {
  12. enterFullScreenName && ele[enterFullScreenName]()
  13. }
  14. const exitFullScreenName = getPropertyName([
  15. 'exitFullScreen',
  16. 'mozCancelFullScreen',
  17. 'webkitExitFullscreen',
  18. 'msExitFullscreen'
  19. ], document)
  20. // 退出全屏
  21. export function exit() {
  22. exitFullScreenName && document[exitFullScreenName]()
  23. }
  24. const fullElename = getPropertyName([
  25. 'fullscreenElement',
  26. 'mozFullScreenElement',
  27. 'msFullScreenElement',
  28. 'wenkitFullscreenElement'
  29. ], document)
  30. // 判断当前那个元素全屏
  31. export function fullEle() {
  32. return document[fullElename] || null
  33. }
  34. // 判断当前是否处于全屏状态
  35. export function isFull() {
  36. return !!fullEle()
  37. }
  38. // 全屏切换
  39. export function toggle(ele) {
  40. isFull() ? exit() : enter(ele)
  41. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/285068?site
推荐阅读
相关标签
  

闽ICP备14008679号