我遇到了一个仅Edge独有的怪异错误。
似乎您只能有123个new Audio()
实例。下一个将具有MediaError.code
的错误MEDIA_ERR_SRC_NOT_SUPPORTED
。 Edge开始认为该文件不受支持或什么-因此它永远不会加载。 networkState
等于NETWORK_NO_SOURCE
,readystate
等于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()
元素而不是一次加载所有元素-没什么区别。另外,文件大小也没有区别。
任何想法如何绕过此错误?
答案 0 :(得分:0)
您曾经提到过,“在Edge中打开下面的链接,打开Developer Tools。然后按“ Start 123”(开始123)按钮(它应该正常工作,没有错误)。完成后,按“ Start 124”(开始124)按钮,然后将出现错误。出现在您的控制台中。”
我尝试用EDGE中的JS Fiddle代码进行测试。 我没有收到任何错误,但收到了警告消息。
下面是我的测试结果。
Click here to see the testing result.
您可以看到它正在正常运行。
我建议您安装最新的Windows更新,然后再次尝试重现此问题。 有可能在最新更新中解决了该问题。
您可以进行测试,并告诉我们您的测试结果。
如果需要,我们将尝试提供进一步的建议。
致谢
Deepak