È possibile riprodurre un suono utilizzando il AudioContext
API e prendendo la fonte da qualsiasi ArrayBuffer
(vale a dire: da un XMLHttpRequest
o a File
)
window.addEventListener('load', function() {
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var source = audioCtx.createBufferSource();
var xhr = new XMLHttpRequest();
xhr.open('GET', 'audio-autoplay.wav');
xhr.responseType = 'arraybuffer';
xhr.addEventListener('load', function (r) {
audioCtx.decodeAudioData(
xhr.response,
function (buffer) {
source.buffer = buffer;
source.connect(audioCtx.destination);
source.loop = false;
});
source.start(0);
});
xhr.send();
});
Live example
Funziona su Chrome e Firefox sia mobile e desktop
Edit:
Vale la pena ricordare, IMO, che questo "trucco" in realtà può essere considerato come un bug del browser, e potrebbe non funzionare più a in qualsiasi momento se il browser decide che ciò interrompe l'esperienza utente/diventa un fastidio ampiamente utilizzato (come le pubblicità).
E 'anche opportuno ricordare che, almeno sul mio cellulare e FF 54, sarà ancora giocato il suono, anche se il vostro cellulare è disattivato ...
Hai ragione circa l'autoplay per 'audio' tag , ma sembra che tu possa riprodurre automaticamente un suono usando 'AudioContext' (vedi la mia risposta) – Xenos