当前位置:   article > 正文

vue3点击按钮实现全屏和取消全屏效果_vue3点击全屏组件

vue3点击全屏组件

出现的问题1:用fullscreenchange监听全屏状态的改变时,发现在Chrome浏览器中,无法正确触发该事件,这个问题是由于Chrome浏览器的缺陷引起的。Chrome使用了Webkit引擎,在处理全屏模式时存在一些不一致性。具体来说,Chrome没有正确地实现fullscreenchange事件

解决办法:用resize替换,监听页面的resize事件,根据页面高度是否等于全屏高度判断是否处于全屏状态,具体代码如下:

  1. <template>
  2. <el-button type="primary" @click="screen">{{ fullscreenText }}</el-button>
  3. </template>
  1. const fullscreen = ref(false)
  2. const fullscreenText = ref('全屏')
  3. if (window.innerHeight === window.screen.height) {
  4. //判断初始化后,是否处于全屏状态
  5. fullscreen.value = true
  6. fullscreenText.value = '取消全屏'
  7. }
  8. onMounted(() => {
  9. //监听页面是否全屏,fullscreen为true代表全屏状态,
  10. window.addEventListener('resize', () => {
  11. if (window.innerHeight === window.screen.height) {
  12. //全屏
  13. fullscreen.value = true
  14. fullscreenText.value = '取消全屏'
  15. } else {
  16. fullscreen.value = false
  17. fullscreenText.value = '全屏'
  18. }
  19. })
  20. })

具体点击全屏的代码:

  1. const screen = () => {
  2. let element = document.documentElement;
  3. if (fullscreen.value) {
  4. //退出全屏操作
  5. if (document.exitFullscreen) {
  6. document.exitFullscreen();
  7. } else if (document.webkitCancelFullScreen) {
  8. document.webkitCancelFullScreen();
  9. } else if (document.mozCancelFullScreen) {
  10. document.mozCancelFullScreen();
  11. } else if (document.msExitFullscreen) {
  12. document.msExitFullscreen();
  13. }
  14. fullscreenText.value = '全屏'
  15. } else {
  16. //全屏操作
  17. if (element.requestFullscreen) {
  18. element.requestFullscreen();
  19. } else if (element.webkitRequestFullScreen) {
  20. element.webkitRequestFullScreen();
  21. } else if (element.mozRequestFullScreen) {
  22. element.mozRequestFullScreen();
  23. } else if (element.msRequestFullscreen) {
  24. // IE11
  25. element.msRequestFullscreen();
  26. }
  27. fullscreenText.value = '取消全屏'
  28. }
  29. //全屏状态取反
  30. fullscreen.value = !fullscreen.value;
  31. }

 出现的问题2:通过按钮点击进入的全屏,不能通过键盘F11退出,相反,通过键盘F11进入的全屏,也不能通过按钮点击退出,

解决方法:通过监听keydown事件,取消F11按钮默认事件,用js按钮点击方法代替,代码如下:

  1. //解决按F11实现的全屏,用api不能退出问题,
  2. //之前窗口对象window不能监听到keydowm事件,最好用文档对象document代替
  3. document.addEventListener('keydown', e => {
  4. e = e || window.event
  5. if (e.keyCode === 122) {
  6. //取消f11按钮,用screen方法替代
  7. e.preventDefault()
  8. screen()
  9. }
  10. })

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

闽ICP备14008679号