【发布时间】:2014-12-02 05:58:06
【问题描述】:
我正在制作一个网络应用程序,我需要在单击按钮时添加一个简短的声音。
文件是 mp3 格式,大小约为 24kb,我不想使用 javascript 创建元素,所以我将它添加到 DOM 并使用 CSS 隐藏它,我还添加了 preload="auto" 所以它得到了加载了 DOM
<audio id="click" preload style="display:none;">
<source src="sound/click.mp3" type="audio/mp3">
</audio>
在javascript中,我有类似的东西:
var clickSound = $('#click')[0];
然后在一个监听我拥有的按钮的偶数点击的函数中:
function(){
clickSound.play();
}
这在我的电脑(firefox、chrome)上运行良好,但在移动设备上点击触发按钮后,它会等待大约 3 秒才能第一次播放,现在会在第一次播放后立即播放延迟播放。
更新:
我注意到,即使我像这样http://example.com/sound/click.mp3 导航到手机上的 mp3 文件并点击播放,它仍然会延迟,似乎必须缓冲。
解决这个问题?
完整示例:
Here is a jsFiddle for mobile testing.
var clickSound = document.getElementById('click');
var play = document.getElementById('play');
play.addEventListener('click', function() {
clickSound.play();
}, false);
<audio id="click" preload>
<source src="http://scriveit.com/sound/click.mp3" type="audio/mp3">
</audio>
<input id="play" type="button" value="play sound">
【问题讨论】:
-
这很有趣。如果您包含一个完整的示例,包括我们可以运行的 mp3,而无需找到合适的 mp3 来自己重新创建它,事情会变得更容易。
-
@misterManSam 我不允许添加外部链接
-
谢谢,但在移动设备上也有同样的延迟,在 PC 上可以正常工作
-
这不是为了解决问题!只是为了测试目的添加它:)小提琴重现了这个问题。对我来说,第一次播放需要等待 30 秒,之后没有延迟。刷新和首次播放会延迟约 3 秒。 Nexus 4 Chrome 浏览器。
标签: javascript jquery html android-mediaplayer media