我正在基于html5视频元素构建游戏,场景就像当视频结束时,其他视频通过检测ended
事件一样开始。
video.on("ended", function() {
someothervideo.play();
});
这在所有浏览器和android手机上都能正常工作,但在iPhone上却无法正常工作。
经过一个小时的研究,我了解了iOS's new video policies,这很有意义
但是上面提到的链接中有一条注释,即
关于用户手势要求的注释:当我们说某个动作必须“由于用户手势”而发生时,是指导致调用
video.play()
的JavaScript,例如,必须直接来自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');
});
但是出于某种原因,这无效。有人可以解释这种行为吗?并建议我做其他事情来解决这个问题?无法将视频设为静音,否则该视频可以正常运行。
注意:我还尝试通过使用addEventListener
和其他东西在javascript中转换上述逻辑,但是仍然没有运气。