Ограничение звука Microsoft Edge 123 - PullRequest
0 голосов
/ 02 сентября 2018

Я столкнулся со странной ошибкой, уникальной только для Edge.

Кажется, что вы можете иметь только 123 new Audio() экземпляра. Следующий будет иметь ошибку MediaError.code из MEDIA_ERR_SRC_NOT_SUPPORTED. Edge начинает думать, что файл не поддерживается или что-то в этом роде, поэтому он никогда не загружается networkState будет равно NETWORK_NO_SOURCE и readystate до HAVE_NOTHING.

Я сделал jsFiddle. Откройте ссылку ниже в Edge, откройте Инструменты разработчика. Затем нажмите кнопку «Старт 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 голосов
/ 04 сентября 2018

Вы упоминали, что «Откройте ссылку ниже в Edge, откройте Инструменты разработчика. Затем нажмите кнопку« Пуск 123 »(она должна работать без ошибок). После этого нажмите кнопку« Пуск 124 », и тогда ошибки будут появится в вашей консоли. "

Я пытаюсь выполнить тест с вашим кодом JS Fiddle в EDGE. Я не получил никакой ошибки, но получил предупреждение.

Ниже приведен мой результат тестирования.

Нажмите здесь, чтобы увидеть результат тестирования.

Вы видите, что он работает без ошибок.

Я предлагаю вам установить последние обновления Windows и снова попытаться воспроизвести проблему. Возможно, что в последних обновлениях проблема решена.

Вы можете сделать тест и сообщить нам о своих результатах.

Мы постараемся предоставить дополнительные предложения, если необходимо.

Привет

Дипак

...