【发布时间】:2021-02-09 20:12:19
【问题描述】:
我正在尝试设置无法在 Safari 14.0.3 上运行的音频播放,但在 Chrome 88.0.4324.146 上运行良好。我有一个返回 AudioContext 或 webkitAudioContext 的函数。我跟着这个答案:https://stackoverflow.com/a/29373891/586006
var sounds;
var audioContext
window.onload = function() {
audioContext = returnAudioContext()
sounds = {
drop : new Audio('sounds/drop.mp3'),
slide : new Audio('sounds/slide.mp3'),
win : new Audio('sounds/win.mp3'),
lose : new Audio('sounds/lose.mp3'),
}
playSound(sounds.drop)
}
function returnAudioContext(){
var AudioContext = window.AudioContext // Default
|| window.webkitAudioContext // Safari and old versions of Chrome
|| false;
if (AudioContext) {
return new AudioContext;
}
}
function playSound(sound){
audioContext.resume().then(() => {
console.log("playing sound")
sound.play();
});
}
【问题讨论】:
-
你忘了在
return new AudioContext;调用一个新实例,那应该是return new AudioContext(); -
该更改在 Safari 上仍然无效。
-
你能举一个我们也可以在Safari中运行的例子吗?这可能会让我们更深入地了解问题所在。
-
当然可以。使用实时示例编辑帖子。注意这个例子没有
return new AudioContext();,但我也试过了,还是不行。 -
非常感谢,这有帮助。你能解释一下
audioContext.resume()的作用以及它存在的原因吗?另请注意,您将HTMLAudioElement(new Audio()) 与 Web Audio API 结合在一起,虽然它们可以一起工作,但它们是分开的。
标签: javascript audio audiocontext webkitaudiocontext