首先,我知道,在iOS下,网站上的视频只会在用户动作上播放(除非设置了单击事件)。
我有一个HTML5视频元素:
<video muted="muted" loop id="js-b2b-video">
<source src="my_video.mp4" type="video/mp4">
</video>然后,在JS中,有一段代码侦听窗口的scroll事件:
$(window).on('scroll', function() {
var $video = $('#js-b2b-video');
// Check if the video is in the viewport
// and if YES, play it:
$video.get(0).play();
});上面的代码适用于Windows和macOS -在Chrome、Edge、Firefox和Safari中。但是,在运行在iOS9上的任何浏览器上(例如在iPad 1上)--没有发生任何事情,视频就不会启动。
所以,我试着模拟一下:
// Listener
$('#js-b2b-video').on('click', function() {
$(this).get(0).play();
});
// Modified scroll listener
$(window).on('scroll', function() {
var $video = $('#js-b2b-video');
// Check if the video is in the viewport
// and if YES, play it:
$video.click();
});什么都没有。撞墙了。
我需要能够在没有用户交互的情况下在iOS上启动视频。我遗漏了什么?
PS。点击(点击)视频也不会启动它。
发布于 2017-08-16 13:38:35
就像CBroe在他的评论中告诉你的那样,阅读他放置的链接(动机部分):
关于用户手势要求的注意事项:当我们说某个动作必须是“用户手势的结果”时,我们指的是导致对video.play()的调用的video.play必须是由一个处理程序直接产生的,例如,一个接触点、单击、doubleclick或keydown事件。因此,button.addEventListener('click',() => { video.play();})将满足用户手势要求。Video.addEventListener(‘canplay身’,() => { video.play();})不会。
因此,它的基本原则是,您不能使用任何事件或行动,从用户开始播放视频。
则“滚动”事件不能工作^^。
https://stackoverflow.com/questions/45714878
复制相似问题