Звук на хроме иногда работает иногда нет - PullRequest
0 голосов
/ 15 мая 2018
playSound : function() {
      var audio = new Audio(audio.mp3);
      audio.play();
 }

Я использую приведенный выше код для простого воспроизведения звука. Но я сталкиваюсь с двумя проблемами ниже:

  1. Звук не воспроизводится, пока я не нажму на вкладку (для этого я перехожу на другую вкладку и затем нажимаю текущую вкладку). Кажется, перед воспроизведением звука нужно событие.
  2. Иногда я получаю исключение, и звук никогда не воспроизводится "Uncaught (в обещании) DOMException: play () не удалось, потому что пользователь сначала не взаимодействовал с документом ."

Я не хочу связываться с элементом HTML.

1 Ответ

0 голосов
/ 15 мая 2018

Вероятно, вы видите изменение политики автоматического воспроизведения мультимедиа на сайтах, выпущенных Chrome: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

По сути, политика гласит, что если пользователь не взаимодействует с вашим носителем и ваш обработчик * не запускает носитель синхронно, он не будет воспроизводить .

Обратите внимание на слово синхронно - вы даже не можете использовать setTimeout или что-то подобное. Это необходимо для защиты пользователя от спам-рекламы и тому подобного. Другие браузеры также имеют эту настройку, но они могут и, скорее всего, включат ее по умолчанию, так что лучше подготовиться к ней.

[*] - (например, обработчик кликов)

...