В Javascript я получаю ошибку DOMException, только на Android, при запуске аудиоклипа с помощью функции play() из функции, вызываемой с событием touchstart.
Я установил событие с помощью этого кода:
instructionsDiv.addEventListener("touchstart", touchStart, false);
И я вызываю аудиоклип в функции с помощью этого кода:
instructionsDiv.removeEventListener("touchstart", touchStart);
audio = new Audio(sndSources.welcome);
audio.play();
Я получаю это предупреждение: "Не удалось выполнить" play "в" HTMLMediaElement ": API может быть инициирован только жестом пользователя".
И эта ошибка: "Невозможно (в обещании) DOMException: play() может быть инициирован только жестом пользователя".
Здесь моя путаница: 1. Я запускаю его с жестом пользователя, используя сенсорное событие 2. Это происходит только на Android. он отлично работает на iPhone
Есть идеи?
Была такая же проблема. Из моих тестов Android не рассматривает "touchstart" как жест для воспроизведения мультимедиа. Вместо этого я использовал "mousedown", и он работает так, как ожидалось.
Я обрабатываю ту же проблему, используя HammerJs для жестов пользователя и обойти исключение DOM.
const mc = new Hammer(element);
mc.on('tap', function() {});
mousedown
не было запущено Chrome Mobile