javascript - Microsoft Edge 123 音频限制

标签 javascript html microsoft-edge

我遇到了一个只有 Edge 独有的奇怪错误。

您似乎只能拥有 123 个 new Audio() 实例。下一个将有 MEDIA_ERR_SRC_NOT_SUPPORTED 的错误 MediaError.code。 Edge 开始认为该文件不受支持或其他原因 - 因此它永远不会加载。 networkState 将等于 NETWORK_NO_SOURCEreadystate 将等于 HAVE_NOTHING

我做了一个 jsFiddle。在 Edge 中打开下面的链接,打开开发者工具。然后按“Start 123”按钮(它应该可以正常工作)。完成后,按“开始 124”按钮,然后您的控制台中会出现错误。

https://jsfiddle.net/rqg0xsw7/5/

与片段相同:

var curIntervalId = 0;

function startDownload(sndMax) {
  var sndFile = "http://freesound.org/data/previews/33/33245_65091-lq.mp3";
  var sndIndex = [];

  for (var i = 0; i < sndMax; i++) {
    var snd = new Audio();
    snd.src = sndFile + "?v=" + Math.random();
    snd.load();
    sndIndex.push(snd);
  }

  function checkSounds() {
    var completed = 0;
    var errored = 0;
    for (var i = 0; i < sndIndex.length; i++) {
      var sndError = sndIndex[i].error;
      if (sndError !== null) {
        errored++;
        console.log(sndError);
      }
      if (sndIndex[i].readyState === 4) {
        completed++;
      }
    }

    $("#completed").html(completed + "/" + sndIndex.length);
    $("#errored").html(errored);
    if ((completed + errored) === sndIndex.length) {
      $('#done').html('Yes');
      $("button").prop('disabled', false);
      clearInterval(curIntervalId);
    }
  }

  return setInterval(function() {
    return checkSounds();
  }, 1000);
}
$("#start123").click(function() {
  $("#completed").html("0/0");
  $("#errored").html(0);
  $('#done').html('No');
  $("button").prop('disabled', true);
  curIntervalId = startDownload(123);
});
$("#start124").click(function() {
  $("#completed").html("0/0");
  $("#errored").html(0);
  $('#done').html('No');
  $("button").prop('disabled', true);
  curIntervalId = startDownload(124);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<button id="start123">Start 123</button>
<button id="start124">Start 124</button>
<table>
  <tr>
    <td>Completed</td>
    <td>
      <div id="completed">0/0</div>
    </td>
    <tr>
      <tr>
        <td>Errors</td>
        <td>
          <div id="errored">0</div>
        </td>
        <tr>
          <tr>
            <td>Done</td>
            <td>
              <div id="done">0</div>
            </td>
            <tr>
</table>

这 2 个按钮之间的唯一区别是正在加载的 new Audio 数量(123 对 124)。我也试过单独加载 new Audio() 元素而不是一次加载所有元素 - 这没有区别。此外,文件大小也没有区别。

知道如何绕过这个错误吗?

最佳答案

您提到过,“在 Edge 中打开下面的链接,打开开发人员工具。然后按“开始 123”按钮(它应该可以正常工作)。完成后,按“开始 124”按钮,然后会出现错误出现在您的控制台中。”

我尝试在 EDGE 中使用您的 JS Fiddle 代码进行测试。 我没有收到任何错误,但收到一条警告消息。

下面是我的测试结果。

Click here to see the testing result.

您可以看到它正在正常工作,没有任何错误。

我建议您安装最新的 Windows 更新,然后再次尝试重现该问题。 有可能,在最新的更新中,问题已解决。

您可以进行测试并让我们知道您的测试结果。

如果需要,我们将尝试提供进一步的建议。

问候

迪帕克

关于javascript - Microsoft Edge 123 音频限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52139217/

相关文章:

javascript - 你可以使用 jquery 来查看目标是否包含 <b> 标签吗?

html - 防止 Firefox 在刷新后恢复先前用户输入的状态

javascript - 在 JavaScript 中拖放

microsoft-edge - Windows 10 Edge 浏览器中的 HTML 注释解析问题

javascript - 尝试使用通用 iframe 在域之间共享 cookie,但得到两个 cookie

javascript - 在 ng-repeat 中实现 ng-style

javascript - React Native中的条件渲染错误

javascript - 禁用asp项目中的右键单击

html - 嵌套时是否应该重新开始标题标签编号?

css - 如何通过 CSS 识别 Microsoft Edge 浏览器?