Javascript android chrome上的HTML5音频,除非调用alert(),否则不会播放

Javascript android chrome上的HTML5音频,除非调用alert(),否则不会播放,javascript,android,html,google-chrome,html5-audio,Javascript,Android,Html,Google Chrome,Html5 Audio,我搜索了其他问题,似乎这是一个有问题的领域。不幸的是,似乎没有其他人和我有同样的问题 我基本上是在点击按钮时触发mp3。我对桌面浏览器没有问题,但当我尝试安卓系统时,我什么都没有得到。我添加了一个alert(),只是为了检查onclick函数是否正在启动,令我惊讶的是,在关闭它之后,音频播放 我知道触发音频需要用户交互,但我认为onclick事件就足够了。我还缺少另一个抓到你了吗 我已经包含了两个片段来显示差异 此版本适用于桌面,但不适用于android 让btn=document.query

我搜索了其他问题,似乎这是一个有问题的领域。不幸的是,似乎没有其他人和我有同样的问题

我基本上是在点击按钮时触发mp3。我对桌面浏览器没有问题,但当我尝试安卓系统时,我什么都没有得到。我添加了一个
alert()
,只是为了检查onclick函数是否正在启动,令我惊讶的是,在关闭它之后,音频播放

我知道触发音频需要用户交互,但我认为onclick事件就足够了。我还缺少另一个抓到你了吗

我已经包含了两个片段来显示差异

此版本适用于桌面,但不适用于android

让btn=document.querySelector('按钮')
让音频=新音频('https://archive.org/download/BirdCall/chrysococcyx-basalis.mp3')
常量handleClick=(文件)=>{
如果(文件已暂停){
file.play();
}否则{
file.currentTime=0;
}
}
btn.onclick=()=>handleClick(音频)
在桌面上工作

鸟叫声那是个奇怪的问题。我在一部旧的安卓手机上试用过,但无法重现这个问题(音频播放时不需要任何提醒框)。我看不出任何明显的解释,但可能chrome在加载音频文件之前正在等待用户输入,您的设备无法足够快地开始加载,然后它遇到了超时。警报框可能只会引入足够的延迟。这很难实现,但您可以尝试添加额外的交互,让用户先加载音频,如下所示:

let load=document.querySelector(“加载”);
让播放=document.querySelector(“播放”);
//此代码段中使用了不同的音频文件,因为archive.org是
//被我的ISP阻止。。。该死的互联网审查制度
让音频=新音频(“https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3");
play.onclick=()=>{audio.play();}
load.onclick=()=>{audio.load();}
audio.oncanplay=()=>{
load.disabled=true;
play.disabled=false;
};
播放

Load
我遇到一篇帖子,它可以帮助你理解@AqibNaeem谢谢你的建议,但问题是他们试图从回调中播放,而不是用户触发的。