Microsoft Edge 123音频限制

时间:2018-09-02 17:01:56

标签: javascript html microsoft-edge

我遇到了一个仅Edge独有的怪异错误。

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

我做了一个jsFiddle。在Edge中打开下面的链接,打开Developer Tools。然后按“开始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>

这两个按钮之间的唯一区别是new Audio的加载量(123对124)。我也尝试过分别加载new Audio()元素而不是一次加载所有元素-没什么区别。另外,文件大小也没有区别。

任何想法如何绕过此错误?

1 个答案:

答案 0 :(得分:0)

您曾经提到过,“在Edge中打开下面的链接,打开Developer Tools。然后按“ Start 123”(开始123)按钮(它应该正常工作,没有错误)。完成后,按“ Start 124”(开始124)按钮,然后将出现错误。出现在您的控制台中。”

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

下面是我的测试结果。

Click here to see the testing result.

您可以看到它正在正常运行。

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

您可以进行测试,并告诉我们您的测试结果。

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

致谢

Deepak