#javascript #html #safari #audiocontext
#язык JavaScript #HTML #сафари #аудиоконтекст
Вопрос:
Я знаю, что мне нужно создать аудиоконтекст после взаимодействия с пользователем в Safari. Однако следующий код по-прежнему не работал.
HTML
lt;button onclick="play"gt;Playlt;/buttongt;
Язык JavaScript
function play() { var AudioContext = window.AudioContext || window.webkitAudioContext var ctx = new AudioContext() fetch('MP3_URL') .then((response) =gt; response.arrayBuffer()) .then((arrayBuffer) =gt; ctx.decodeAudioData(arrayBuffer)) .then((audioBuffer) =gt; { var source = ctx.createBufferSource() source.buffer = audioBuffer source.connect(ctx.destination) source.start(ctx.currentTime) }) }
Тот же код работает в Google Chrome и safari.
Есть ли что — то неправильное, что я здесь делаю? Большое спасибо!!
Ответ №1:
Я действительно не вижу смысла для меня, но в этом случае Safari нужен еще один толчок, чтобы начать AudioContext
. Вызов resume()
сразу после создания AudioContext
должен сработать.
// ... var ctx = new AudioContext(); ctx.resume(); fetch('MP3_URL') // ...