音频播放错误的异常 [已解决]

原文链接: 音频播放错误的异常 [已解决]

上一篇: css 九宫格布局

下一篇: 随机数和数组乱序

会有两个错误

chrome

The play() request was interrupted by a call to pause().

safari

AbortError: The operation was aborted

错误的产生是由于在播放时资源未加载完毕, 在执行play后的等待时间内, 调用了pause方法导致的

播放时使用canplay 事件判断是否可以播放, 使用额外的标记位来记录状态, 只要在资源加载完成后才能播放和暂停, 或者直接catch住异常即可

https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canplay_event

play 返回一个promise, 如果有异常需要使用.catch语句捕获异常, 不能使用try catch, 这种语法不能捕获promise的异常

低端机可能会不返回promise, 需要特殊判断

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- <audio id="audio" src=""></audio> -->
    <script>
      // const a = document.getElementById('audio')

      const h = () => {
        const a = document.createElement("audio");
        a.setAttribute("src", "./t.mp3");
        try {
          const p = a.play();
          console.log("p", p);
          p.catch((e) => console.log("1,", e));
        } catch (e) {
          console.log("try", e);
        }

        try {
          a.pause();
        } catch (e) {
          console.log("catch", e);
        }
      };
      h()
      document.addEventListener("click", h);

      window.addEventListener("error", (e) => {
        console.log("error", e);
      });
    </script>
  </body>
</html>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值