Все эти браузеры просят, чтобы ваш пользователь сделал жест, чтобы подтвердить, что он действительно хочет, чтобы ваша страница производила звук.
Так что все, что вам нужно сделать, это пригласить своих пользователей сделать этот пользовательский жест .
Чтобы быть в полной безопасности, вы вызовете метод play()
MediaElement, которым вы хотите управлять с помощью этого события, инициируемого жестом пользователя (которое на самом деле требуется Safari), и тогда у вас будет полный контроль над этим MediaElement:
// original samples from wikimedia
// https://en.wikipedia.org/wiki/Category:The_Beatles_audio_samples
const audio = new Audio("https://dl.dropboxusercontent.com/s/0eio842lwj1x5dj/Strawberry_Fields_Forever_%28Beatles_song_-_sample%29.mp3");
audio.repeat = true;
audio.volume = 0;
document.getElementById( 'btn' ).onclick = e => {
document.getElementById( 'splash' ).remove();
audio.play().then( () => {
audio.currentTime = 0;
audio.pause();
audio.volume = 1;
startTimers();
});
};
function startTimers() {
setTimeout( playAudio, 2000 );
setTimeout( pauseAudio, 3000 );
setTimeout( playAudio, 6000 );
setTimeout( changeSrc, 7000 );
setTimeout( pauseAudio, 15000 );
setTimeout( playAudio, 60000 );
setTimeout( pauseAudio, 70000 );
}
function playAudio() {
console.log('playing');
audio.play();
}
function pauseAudio() {
console.log('pausing');
audio.pause();
}
function changeSrc() {
console.log('changing src');
audio.src = "https://dl.dropboxusercontent.com/s/okbnk1ycupxrrb2/_Sgt._Pepper%27s_Lonely_Hearts_Club_Band_by_the_Beatles_1967%20%281%29%20%28online-audio-converter.com%29.mp3";
audio.play();
}
#splash {
position: absolute;
left: 0;
top: 0;
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
#splash p { display: inline-block }
<div id="splash">
<button id="btn"><h1>Start the awesome</h1></button>
</div>