问答

在移动端播放音频时 回到桌面时让音频暂停 回到浏览器继续播放

作者:admin 2021-10-13 我要评论

最近在做一个网页上播放音乐的组件 但是在浏览器中播放 回到桌面时还在继续播放 这问题怎么解决 下面是我vue中写的代码 `template div class="music-main" !-- ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
最近在做一个网页上播放音乐的组件 但是在浏览器中播放 回到桌面时还在继续播放 这问题怎么解决
下面是我vue中写的代码
`<template>
<div class="music-main"> <!-- 播放音乐的提示 -->
<div class="tips" v-if="showtips && tipTitle.length !== 0">{{tipTitle}}</div>
<div class="music-box">
<div class="music-container" :class="[stopRotate ? 'rotate' : '']">
<!-- 暂停音乐时候的暂停标识 -->
<div :class="[stop ? '' : 'line']"></div>
  <audio id="audioDetail" :src="audioSrc" loop>
    <source :src="audioSrc" type="audio/mp3">
    <source :src="audioSrc" type="audio/wav">
    <source :src="audioSrc" type="audio/ogg">
    <object :data="audioSrc">
        <embed :src="audioSrc" />
    </object>
</audio>

</div>
</div>
</div>
</template>
<script>
export default {

name: 'CMusic',
props: {
    // 音乐路径 通过父组件传递
    audioSrc: {
        type: String,
        default: 'https://down-files.2bulu.com/f/d1?downParams=kAgzw+ovAosKBLYt1Quxlw=='
    },
    tipTitle: {
        type: String,
        default: ''
    },
    showtips: {
        type: Boolean,
        default: true
    },
    stop: {
        type: Boolean,
        default: true
    },
    stopRotate: {
        type: Boolean,
        default: false
    }
},
methods: {
    // 暂停
    stopPlay () {
        let audio = document.getElementById('audioDetail')
        audio.pause()
    },
    // 播放
    async payPause () {
        let audio = document.getElementById('audioDetail')
            audio.play()
    }
}

}
</script>`### 问题描述

问题出现的环境背景及自己尝试过哪些方法

  1. iphone自带浏览器
  2. 微信链接打开地址
  3. qq链接

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
`destroyed() {

this.$refs.music.stopPlay()
// this.openMusic = false

}`

在组件销毁前暂停播放

你期待的结果是什么?实际看到的错误信息又是什么?

###

用原生js试试,这些知识也是无意中看到的,你可以试试,行不行我也没试过0.0:
写vue不要被vue的风格局限,在vue中也可以用document操作dom,也可以写原生js,在必要的时候还是得用而且很好用。

传统的页面监听方式有:pagehide、beforeunload、unload

但是,这些事件在手机上可能不会触发,页面就直接关闭了。因为手机系统可以将一个进程直接转入后台,然后杀死。

浏览器提供了一个更可靠的方法:

document.visibilityState有三个值:

  • hidden:页面彻底不可见。
  • visible:页面至少一部分可见。
  • prerender:页面即将或正在渲染,处于不可见状态。

当visibilityState的值放生变化的时候会触发visibilitychange事件:

`document.addEventListener('visibilitychange',  function  ()  {// 用户离开了当前页面

     if  (document.visibilityState ===  'hidden')  { 
     document.title =  '页面不可见';  
     }  // 用户打开或回到页面 
     if  (document.visibilityState ===  'visible')  { 
     document.title =  '页面可见';  
     }  
 });`

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 在移动端播放音频时 回到桌面时让音频

    在移动端播放音频时 回到桌面时让音频

  • 关于php单例模式

    关于php单例模式

  • 【JAVA小白】问关于java.util.Date的问

    【JAVA小白】问关于java.util.Date的问

  • http  POST请求如果没有设置content ty

    http POST请求如果没有设置content ty

腾讯云代理商
海外云服务器