Проблема с Safari при воспроизведении аудио с помощью setInterval - PullRequest
0 голосов
/ 05 июня 2018

Почему это работает в Chrome, Firefox и Opera, но не в Safari (11.1)?Попытка запустить его в Safari приведет к тому, что аудиофайл будет воспроизведен только один раз, без ошибок.Ведение журнала подтверждает, что setInterval все еще работает.

const sound = new Audio('sound.mp3');
const play = () => sound.play();

const handleClick = () => window.setInterval(play, 500);

const el = document.getElementById('play');
el.addEventListener('click', handleClick);
<!DOCTYPE html>
<html>

<head>
  <script src="index.js" defer></script>
</head>

<body>
  <button id='play'>Play</button>
</body>

</html>

1 Ответ

0 голосов
/ 14 июня 2018

Safari 11 включает в себя новую функцию, которая требует взаимодействия с пользователем для воспроизведения любого мультимедиа.Это означает, что звук будет воспроизводиться, если вы выполните воспроизведение, как показано ниже:

const handleClick = play;

Любое событие, произошедшее между щелчком мыши, и воспроизведение не будет воспроизводить звук.Как и setInterval в вашем случае.

Эта функция также представлена ​​в Google Chrome 64.

Подробнее.

...