iOS не воспроизводит видео html5 после жеста пользователя в асинхронной функции JavaScript - PullRequest
0 голосов
/ 26 сентября 2019

Я хотел бы воспроизвести видео HTML5 в асинхронной функции в качестве обработчика события click, но iOS возвращает NotAllowedError - The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission..Все другие браузеры и операционные системы воспроизводят видео без ошибок.

Видео отображается на странице и работает при прямом вводе URL-адреса.Добавлена ​​опция playsinline.Я не хотел бы отключить звук видео.Средой iOS является Safari на iOS 12, и проблема также может быть воспроизведена на Safari iOS 11.

Вот мой код JavaScript:

async function StartButton_Click() {
    await doSomething();
    document.querySelector("#myvideo").play();
}
document.getElementById("startbutton").onclick = StartButton_Click;

Оператор await включен, потому чтоЯ хочу, чтобы doSomething() завершился до начала видео.

#myvideo и #startbutton все определены в HTML.В частности, #myvideo выглядит следующим образом:

<video id="myvideo" preload="auto" src="video.mp4" playsinline></video>

Я ожидаю, что видео будет воспроизводиться при нажатии #startbutton, поскольку политика iOS гласит, что видео может воспроизводиться по жесту пользователя.Однако указанная выше ошибка указана в консоли.Несмотря на то, что обработчик является функцией async, видео все равно должно воспроизводиться, поскольку оно все еще является прямым результатом пользовательского жеста.

Как мне изменить этот код, чтобы он воспроизводился в iOS Safari?

...