Я хотел бы воспроизвести видео 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?