美文网首页
网页 H5 播放音频 audio 问题记录

网页 H5 播放音频 audio 问题记录

作者: 我叫Aliya但是被占用了 | 来源:发表于2021-06-08 15:08 被阅读0次
    <audio id="audio" loop controls src="yellow.mp3">
      (该浏览器不支持音频播放组件)
    </audio>
    <script>
      const ele = document.querySelector("#audio");
      let isAudioLoaded = false;
      let isUserActioned = false;
    
      function Play(e) {
        console.log(e.type);
        if (e.type === "click") isUserActioned = true;
        else isAudioLoaded = true;
    
        if (!isAudioLoaded) return console.log("音频未就绪");
        if (!isUserActioned) return console.log("等待用户事件");
    
        ele.load();
        ele.play();
        ele.oncanplay = undefined;
      }
    
      ele.oncanplay = Play;
      window.addEventListener("click", Play, { once: true });
    </script>
    

    h5 标签 audio 不允许在没有用户操作时进行自动自动播放。否则会报一个 DOMException: play() failed because the user didn't interact with the document first.的错误。

    • 不管用:改为静音模式(muted 属性)

    • 不管用:使用 js 模拟一个用户操作(调试工具也是页面的一部分,所以会出现在调试工具中 play 方法可成功)

    必须由用户操作一个页面(随便点下哪里)才行。

    如果在音频未加载完成就调用 play 用报Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().或者Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.。需要 oncanplay 之后再播放。

    相关文章

      网友评论

          本文标题:网页 H5 播放音频 audio 问题记录

          本文链接:https://www.haomeiwen.com/subject/ieqjeltx.html