如何在 JavaScript 中播放声音

Posted

技术标签:

【中文标题】如何在 JavaScript 中播放声音【英文标题】:How to play sounds in JavaScript 【发布时间】:2012-02-23 18:58:06 【问题描述】:

我有以下几点:

<audio id="clickdown-wav" src="ClickDown.wav" preload="auto"></audio>

然后在我的 javascript 中,我有:

var ClickDown = $('#clickdown-wav')[0];

$(document).delegate('a','click',function() 
    ClickDown.play();
);

问题是当我按下锚标签时(在 iPad 上)它不是太活泼。在我按下锚标签和播放 wav 文件之间存在明显的延迟。

问:是否有仅通过源代码来播放 JavaScript 声音的解决方案? Clickdown.wav 只有 1k。

【问题讨论】:

【参考方案1】:

ios 上,没有预加载。这是 Apple 故意这样做的,这样用户就不必使用不必要的带宽。

【讨论】:

总是有些东西,不是吗? 一种解决方法是在用户事件(点击、滚动等)上触发 load()。 可能,但@cf_PhillipSenn 的措辞似乎暗示了每个 绑定a click 事件,而不仅仅是第一个。【参考方案2】:

您可以尝试在您的网络应用程序上放置一个不可见的“按钮”,该按钮会在第一次用户交互时获得点击。在那次互动之后sound.play(); 应该可以工作。看看这个thread。

【讨论】:

【参考方案3】:

你需要使用触摸事件而不是点击事件,将点击切换到“touchstart”,延迟就会消失

【讨论】:

以上是关于如何在 JavaScript 中播放声音的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中播放声音

如何使用 html 和 javascript 在网页上自动播放声音

如何播放每个 X 声音的音频?在javascript中

如何在 javascript 中快速播放声音文件的多个副本

使用 Javascript 在 iPhone 网络应用程序中播放声音?

在播放下一个声音之前在 javascript 中停止任何以前播放的声音(base64)的方法