我遇到了一个只有 Edge 独有的奇怪错误。
您似乎只能拥有 123 个 new Audio()
实例。下一个将有 MEDIA_ERR_SRC_NOT_SUPPORTED
的错误 MediaError.code
。 Edge 开始认为该文件不受支持或其他原因 - 因此它永远不会加载。 networkState
将等于 NETWORK_NO_SOURCE
,readystate
将等于 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/