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

В Javascript я получаю ошибку DOMException, только на Android, при запуске аудиоклипа с помощью play() из функции, которая вызывается с событием touchstart.

Я настроил событие с этим кодом:

instructionsDiv.addEventListener("touchstart", touchStart, false);

И я вызываю аудиоклип в функции с этим кодом:

instructionsDiv.removeEventListener("touchstart", touchStart);
audio = new Audio(sndSources.welcome);
audio.play();

Я получаю это предупреждение: "Не удалось выполнить" play "для" HTMLMediaElement ": API может быть инициирован только жестом пользователя".

И эта ошибка: "Uncaught (в обещании) DOMException: play() может быть инициировано только жестом пользователя".

Вот мое замешательство: 1. Я инициирую его жестом пользователя, используя событие касания 2. Это происходит только на Android. на iPhone работает нормально

Есть идеи?

2 ответа

Была точно такая же проблема. Судя по моим тестам, Android не рассматривает "сенсорный запуск" как жест для воспроизведения мультимедиа. Я использовал "mousedown" вместо этого, и он работает, как ожидалось.

Я решаю ту же проблему, используя HammerJ для пользовательского жеста и обходя исключение DOM.

const mc = new Hammer(element);
mc.on('tap', function() {});
Другие вопросы по тегам