在加载.mp3文件时获得206个部分内容
getting 206 partial content while loading .mp3 files
我有一个web应用程序,可以加载instagram图像并创建带有背景声音的幻灯片。在加载图像时,将运行预加载程序来显示处理过程。但它没有完全加载mp3文件,当我在浏览器的控制台检查它有206 partial content
。因此,在点击播放按钮时,我必须等待几秒钟,以便音乐被完全加载以播放幻灯片。
console.log('loading theme: ' + folder);
$.ajaxSetup({
cache: false
});
$.when(
$.getScript(epic.getFrontendURL() + "animations/" + folder + "/js/data.js"),
$.getScript(epic.getFrontendURL() + "animations/" + folder + "/js/main.js"),
$.Deferred(function (deferred) {
$(deferred.resolve);
})
).done(function () {
//some methods
sound_bg.src = epic.getFrontendURL() + "sound/back.mp3?
});
那么,这是否与延迟处理的done
有关呢?
此行为正常。浏览器使用HTTP范围请求来加载音频和视频文件,以尽量减少带宽使用。
如果你想让浏览器预加载音频,设置音频元素的preload
属性为auto
:
<audio src="..." preload="auto"></audio>
我找到了一种方法来检查是否有错误,如果有声音错误,你的网站会重新加载错误的声音,直到它加载正确。这对我来说很有效:
var sound1 = new Audio('sfx/1.mp3')
var sound2 = new Audio('sfx/2.mp3')
var sound3 = new Audio('sfx/3.mp3')
var soundChecker = setInterval(function() {
if (sound1.error) {
sound1 = new Audio('sfx/1.mp3')
} else if (sound2.error) {
sound2 = new Audio('sfx/2.mp3')
} else if (sound3.error) {
sound3 = new Audio('sfx/3.mp3')
} else {
clearInterval(soundChecker)
}
}, 1500)
这将检查错误时加载声音每一个半秒(你可以修改时间较慢的连接),如果有一个错误与任何加载的声音,soundChecker将重新加载它们,直到所有的声音已经加载成功(没有错误)。如果所有声音都已成功加载,声音检查间隔将自行清除并停止检查。
您将注意到诸如net::ERR_CACHE_READ_FAILURE 206 (Partial Content)
之类的错误仍将在控制台中打印,但声音将正常工作,因为在随后的重新加载中它已成功加载。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- Html页面上的多个Base64图像和平滑加载
- 加载两个具有相同父密钥名称的json文件
- 分页:如何用AJAX加载第一个页面
- 在离子态上加载多个视图
- 使用多个依赖项加载只进行一次AJAX调用
- 正在加载具有相同功能的多个对象
- 当加载几个js文件时,defer属性应该如何工作
- jQuery progressbar只在第一个加载
- Grails:多个加载ajax调用,但只有一个打印到控制台
- 如何确保外部JS代码作为第一个加载
- JQuery 多个加载动画循环,具有多个选项卡的错误
- 具有多个加载数据的PhantomJS页面抓取
- Webpack - 错误:无法在加载器列表中定义“查询”和多个加载器
- 第二个加载功能不起作用
- 如何收听两个加载事件
- 如何将查询添加到具有多个加载器的webpack加载器中
- 在加载.mp3文件时获得206个部分内容
- HTML中的多个加载错误
- msdropdown -基于第一个加载第二个下拉列表