当前位置 : 主页 > 网页制作 > html >

[vue] beforeDestroy中dom为null?

来源:互联网 收集:自由互联 发布时间:2021-06-12
场景:页面支持播放语音 跳转到其他页面时 需要在beforeDestroy中暂停播放 防止部分型号手机再下个页面中继续播放 先来看一下代码: beforeDestroy() { let _audio = document.getElementById( ‘ aud

场景:页面支持播放语音 跳转到其他页面时 需要在 beforeDestroy中暂停播放 防止部分型号手机再下个页面中继续播放

先来看一下代码:

beforeDestroy() {
      let _audio = document.getElementById(audioIntroduce);
      console.log(_audio);
      _audio.pause();
      this.isPlaying = false;
}

结果如下:

分享图片

 

通过 document.getElementById(‘audioIntroduce‘) 拿到的dom竟然为null?这不科学

接着我在 beforeDestroy() 里打印 document 发现打印出来的document对象竟然是我跳转之后的页面对象QAQ

打断点发现 一旦开始执行 beforeDestroy() 这个方法 页面就跳转到了下一个页面 此时document对象当然就是下一个页面

尝试打印this对象 发现打印出来的this是当前页面的vue对象,那么既然可以拿到当前页面的this对象 同样的 可以通过ref拿到我们想要的audio元素

修改后:

beforeDestroy() {
      let _audio = this.$refs.audioIntroduce;
      console.log(_audio);
      _audio.pause();
      this.isPlaying = false;
}

此时拿到的audio对象:

分享图片

 

 yeah!done!!

网友评论