iam currenlty试图修复此javascript代码,但我似乎无法正确解决它仍然抛出
未捕获(承诺)AbortError:play()请求被中断 通过调用pause()
我不明白这是怎么回事,所以如果你们能帮助我,我会很开心的
这是代码
<html>
<head>
<script src="nui://game/ui/jquery.js" type="text/javascript"></script>
<script>
var audioPlayer = null;
window.addEventListener('message', function(event) {
if (event.data.transactionType == "playSound") {
if (audioPlayer != null) {
audioPlayer.pause();
}
audioPlayer = new Audio("./sounds/" + event.data.transactionFile + ".ogg");
audioPlayer.volume = event.data.transactionVolume;
audioPlayer.play();
}
});
</script>
</head>
答案 0 :(得分:0)
我在播放声音时遇到了这个问题。以下代码为我修复了该问题:
var soundPromise = audioPlayer.play();
//If the promise exists
if (soundPromise != undefined) {
soundPromise.then(function(_) {
//Pause and reset the sound
sound.pause();
sound.currentTime = 0;
});
}
让我知道您是否有任何问题!
答案 1 :(得分:0)
这是浏览器中的自动播放问题:简而言之,如果您不进行某些操作(例如单击,触摸),浏览器将不允许媒体自动开始播放。
可以参考:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
要解决此问题,您应将.play()
的调用置于单击按钮的回调函数中,例如
playBtn.onclick = function(){
audioPlayer.play();
}
这不是问题,实际上是一条规则。