Аудиоконтекст не работает в Safari, но работает в Google Chrome

#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') // ...