svi*_*gen 5 javascript audio internet-explorer-9 internet-explorer-10
我们有一组HTML块 - 比如大约50块 - 它们被迭代解析并Audio动态添加了对象:
var SomeAudioWrapper = function(name) {
this.internal_player = new Audio();
this.internal_player.src = this.determineSrcFromName(name);
// ultimately an MP3
this.play = function() {
if (someOtherConditionsAreMet()) {
this.internal_player.play();
}
}
}
Run Code Online (Sandbox Code Playgroud)
假设我们在页面加载时生成大约40到80个这些,但对于特定配置总是相同的集合.在所有测试的浏览器中,这个基本策略似乎都有效.音频加载并成功播放.
在IE的9和10中,出现了一个瞬态错误.有时,调用.play()内部Audio对象失败.经检查,内Audio对象具有.error.code的4(MEDIA_ERR_SRC_NOT_SUPPORTED).文件.duration显示NaN.
但是,这只会偶尔发生,并且会发生在音频文件的某些随机子集中.例如,通常 file_abc.mp3玩,但有时会产生错误.在任何一种情况下,网络监视器都显示成功下载.并尝试通过控制台重新加载文件也失败 - IE的网络监视器中没有出现任何请求:
var a = new Audio();
a.src = "the_broken_file.mp3";
a.play(); // fails
a.error.code; // 4
Run Code Online (Sandbox Code Playgroud)
即使附加查询值也无法重新获取音频或触发任何网络请求:
var a = new Audio();
a.src = "the_broken_file.mp3?v=12345";
a.play(); // fails
a.error.code; // 4
Run Code Online (Sandbox Code Playgroud)
但是,尝试使用相同的代码在新选项卡中加载损坏的音频文件:"不支持的src"完美播放.
我们可能会遇到任何资源限制吗?(也许"不支持"的音频会在下载后完成?)是否有任何已知的错误?解决方法?
我想我们可以很容易地检测文件何时失败.出于其他兼容性原因,我们运行循环来检查音频进度和完成统计数据,以防止通过应用程序(评估)进行直到音频完成.我们可以轻松地寻找.error价值 - 但如果我们找到一个,我们该怎么做呢!?
附录:我刚刚发现了一个相关的问题(IE 9/10/11声音文件限制),表明有一个未记录的限制为41 - 不确定这是否是"41个音频文件请求"的限制,"41个内存中的音频对象",或什么.我还没有找到关于此事的任何M $文件 - 或者已知的解决方案.
您看过这些有关 IE 中音频文件限制的页面吗?这些信息特定于 Sound.js,但这些信息可能适用于您的问题:
\n\nhttps://github.com/CreateJS/SoundJS/issues/40 ...
\n\n最后评论中提到的可能的解决方案:“根据平台控制音频标签的最大数量并重用它们而不是重新创建它们”
\n\n其他信息:http://community.createjs.com/kb/faq/soundjs-faq(请参阅标题为 \xe2\x80\x9c 的部分,我加载了很多声音,为什么在 Internet Explorer 中遇到错误?\xe2\x80 \x9d)
\n| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |