首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML5音频重新启动

HTML5音频重新启动
EN

Stack Overflow用户
提问于 2012-10-21 22:43:45
回答 4查看 21.9K关注 0票数 26

拥有

代码语言:javascript
复制
var audio = new Audio("click.ogg")

我在需要的时候播放点击声

代码语言:javascript
复制
audio.play()

但是,有时用户速度太快,以至于浏览器根本不播放音频(可能还在播放以前的play请求时)。此问题与预加载有关吗?

如何迫使浏览器停止播放并重新开始?没有stop,只有pause在HTML5音频组件,对吗?这里有什么解决办法?

更新-附加说明:

我有多个类似复选框的div元素和一个touchend事件。当触发这样的事件时,元素就会在视觉上发生变化,播放声音,并相应地设置内部变量。如果用户慢慢地点击这些元素,一切都会很好地工作。如果快速敲击,声音通常会被完全跳过.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-03 12:30:58

最简单的解决方案是重置音频currentTime并确保它使用play()方法播放。检查音频是否正在播放是不必要的,因为后续的play()调用不会做任何事情。

代码语言:javascript
复制
audio.currentTime = 0;
audio.play();
票数 57
EN

Stack Overflow用户

发布于 2013-04-15 09:54:52

这是我一直在使用的代码,它正在为我工作:

代码语言:javascript
复制
            if(audioSupport.duration > 0 && !audioSupport.paused){

                //already playing
                audioSupport.pause();
                audioSupport.currentTime = 0;
                audioSupport.play();

            }else{

                //not playing

                audioSupport.play();    

            }
票数 9
EN

Stack Overflow用户

发布于 2020-03-07 00:30:20

我注意到在Firefox上,一次又一次地播放声音非常快(就像一个短的滴答声)会经常跳过节拍。我得到的最好的解决方案就是简单地调用cloneNode并以这种方式播放每个声音。它并不完美(与听起来完美无瑕的Chrome相比):

代码语言:javascript
复制
var audio = document.getElementById('myaudio');
setInterval(function() {
    audio.cloneNode().play();
}, 100);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13002935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档