在screenfull全屏模式下,监听不了Esc键 @keyup.esc无效果,document.addEventListener(‘keyup‘()=>{}) 无效

使用场景:vue 在全屏模式下需要监听是否按下Esc退出键,做后续操作

但是在使用以下三种方法都没有效果

<div @keyup.up="showBigMap = false" />
mounted() {
    //Esc 退出全屏
    this.$nextTick(function() {
      document.addEventListener('keyup', function(e) {
        //此处填写你的业务逻辑即可
        if (e.key == 'Escape') {
            this.showBigMap = false
        }
      })
    })
  },
watch: {   //监听退出全屏的变量
    'screenfull.isFullscreen': {
      handler(value) { 
        if (!value) { 
          if (this.showBigMap) {
            this.showBigMap = false
           }
        }
      },
      immediate:true
    }
  },

下面上最终实现效果的方法!!!!!

  created() {
    window.onresize = () => {
      if (!this.checkFull()) {
        // 退出全屏后要执行的动作
        if (this.showBigMap) {
          this.showBigMap = false
        }
      }
    }
  },

  methods: {
    // 判断全屏
    checkFull() {
      //判断浏览器是否处于全屏状态 (需要考虑兼容问题)
      //火狐浏览器
      var isFull =
        document.mozFullScreen ||
        document.fullScreen ||
        //谷歌浏览器及Webkit内核浏览器
        document.webkitIsFullScreen ||
        document.webkitRequestFullScreen ||
        document.mozRequestFullScreen ||
        document.msFullscreenEnabled
      if (isFull === undefined) {
        isFull = false
      }
      return isFull
    },
  }

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值