Ошибка DOMException - Javascript play () может быть инициирован только жестом пользователя, но я вызываю его из touchStart

1

В 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

Есть идеи?

Теги:
audio
domexception

2 ответа

2

Была такая же проблема. Из моих тестов Android не рассматривает "touchstart" как жест для воспроизведения мультимедиа. Вместо этого я использовал "mousedown", и он работает так, как ожидалось.

  • 0
    К сожалению, событие mousedown не было запущено Chrome Mobile
  • 0
    работает как шарм! Спасибо @ Саарико!
1

Я обрабатываю ту же проблему, используя HammerJs для жестов пользователя и обойти исключение DOM.

const mc = new Hammer(element);
mc.on('tap', function() {});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню