AbortError: play() 请求被对 pause() 的调用中断
Posted
技术标签:
【中文标题】AbortError: play() 请求被对 pause() 的调用中断【英文标题】:AbortError: The play() request was interrupted by a call to pause() 【发布时间】:2018-12-12 02:06:00 【问题描述】:iam currenlty 试图修复这个 javascript 代码,但我似乎无法正确解决它仍然抛出
Uncaught (in promise) 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>
【问题讨论】:
【参考方案1】:我自己在玩声音时遇到了这个问题。下面的代码为我修复了它:
var soundPromise = audioPlayer.play();
//If the promise exists
if (soundPromise != undefined)
soundPromise.then(function(_)
//Pause and reset the sound
sound.pause();
sound.currentTime = 0;
);
如果您有任何问题,请告诉我!
【讨论】:
Iam littarly 一直盯着这段代码看了 2 个小时,我不明白如何将它实现到我现在拥有的代码中。我有点脑残,所以如果你能再帮我一次,我真的很感激。 把它放在你打电话的任何地方.pause()
。
@JackBashford 在您调用sound.pause();
的那一行 - 您从哪里获得sound
变量?
这就是 OP 使用的任何声音 - 这只是一个占位符示例。【参考方案2】:
这是浏览器中的自动播放问题:简而言之,如果您不进行某些操作(例如单击、触摸),浏览器将不允许媒体自动开始播放。
可以参考:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
要解决这个问题,你应该把.play()
的调用放在点击按钮的回调函数中,例如
playBtn.onclick = function()
audioPlayer.play();
这不是一个问题,它实际上是一个规则。
【讨论】:
这不是自动播放 - 你会看到 OP 给我们的错误是the play() request was interrupted by a call to pause()
。以上是关于AbortError: play() 请求被对 pause() 的调用中断的主要内容,如果未能解决你的问题,请参考以下文章
Edge 17 - PushManager.Subscribe 失败并出现 AbortError
注册 ServiceWorker 返回 AbortError code:20