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

2021-06-08  本文已影响0人  我叫Aliya但是被占用了
<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.的错误。

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

如果在音频未加载完成就调用 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 之后再播放。

上一篇下一篇

猜你喜欢

热点阅读