Я строю игру на основе элементов видео html5, и сценарий похож на то, когда видео заканчивается, другое видео начинается с обнаружения события ended
, подобного этому.
video.on("ended", function() {
someothervideo.play();
});
Это прекрасно работает на всех браузерах и телефонах Android, но не работает на iPhone.
После нескольких часов исследований я узнал о новых видео политиках iOS , и это имеет смысл
Но в этой вышеупомянутой ссылке есть примечание, т.е.
Примечание о требовании жеста пользователя: когда мы говорим, что действие должно было произойти «в результате жеста пользователя», мы имеем в виду, что JavaScript, который привел к вызову video.play()
, например, должен иметь непосредственно получен из обработчика для события touchend
, click
, doubleclick
или keydown
. Таким образом, button.addEventListener('click', () => { video.play(); })
будет удовлетворять требованию жеста пользователя. video.addEventListener('canplaythrough', () => { video.play(); })
не будет.
По линии
button.addEventListener('click', () => { video.play(); })
будет соответствовать требованию жеста пользователя.
Я пытался поместить кнопку в DOM, как будто она нигде не отображается
<button id="fakedbtn" style="left:-999999999px">Faked button</button>
И изменил мой прослушиватель событий на
video.on("ended", function() {
$('#fakedbtn').on('click',function(){
someothervideo.play();
});
$('#fakedbtn').trigger('click');
});
Но по какой-то причине этот тоже не работает . Может кто-нибудь объяснить это поведение? И предложить мне что-нибудь еще, чтобы сделать трюк? Видео не может быть отключено, иначе это сработало бы.
Примечание: Я также пытался преобразовать вышеуказанную логику в javascript, используя addEventListener
и прочее, но все же не повезло.