Javascript 播放音频文件返回“返回”;未兑现的(承诺中的)“;但在控制台中工作
我正在尝试播放音频文件(我尝试了很多)。它们都是MP3。 我已经在MAMP localhost上测试了以下内容,并且只在浏览器中运行了它 我使用以下javascript:Javascript 播放音频文件返回“返回”;未兑现的(承诺中的)“;但在控制台中工作,javascript,html,asynchronous,audio,html5-audio,Javascript,Html,Asynchronous,Audio,Html5 Audio,我正在尝试播放音频文件(我尝试了很多)。它们都是MP3。 我已经在MAMP localhost上测试了以下内容,并且只在浏览器中运行了它 我使用以下javascript: var testSound = new Audio(); testSound.src = "a.mp3" setTimeout(testSound.play.bind(testSound),100) 这将返回错误: Uncaught (in promise) 试图抓住它: var testSound = new Audio
var testSound = new Audio();
testSound.src = "a.mp3"
setTimeout(testSound.play.bind(testSound),100)
这将返回错误:
Uncaught (in promise)
试图抓住它:
var testSound = new Audio();
testSound.src = "a.mp3"
setTimeout(playSound,100)
function playSound () {
testSound.play().then(response => {
}).catch(e => {
console.log(e);
})
}
不返回任何内容(“”
)
但如果我现在转到控制台并简单地键入:
testSound.play()
声音按预期播放
即使我对第一个代码段的第三行进行了如下注释:
//setTimeout(testSound.play.bind(testSound),100)
编辑:
即使人们不知道解决方案是什么,我仍然有兴趣知道他们是否能够重现错误
编辑2:
顺便说一句,这个问题在Firefox或Safari中并不存在。如果您阅读了与异常相关的完整错误消息,您会得到更好的解释: ❌ 未捕获(承诺中)DomeException:play()失败,因为用户没有首先与文档交互 谷歌的文章“”(链接在上面的消息中)详细解释了这种情况
简短的版本是:如果你想播放音频或视频,你需要等到用户单击页面上的某个内容后再播放。我没有收到如此详细的错误,只有我显示的错误。当我抓到它时,它没有显示出我上面详述的那样好。我听错了吗?尽管如此,非常感谢您的帮助,这似乎是问题所在。有没有办法在没有人机交互的情况下播放音频?是的。可以在没有用户交互的情况下播放视频document.getElementById('video').autoplay=true;document.getElementById('video').mute=true;document.getElementById('video').play()```