2017-08-16 158 views
0

首先,我知道在iOS下的网站上的视频只能在用户操作(除非设置了点击事件)上播放。无法在iOS9(iPad)上启动的HTML5视频

我有一个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。点击(点击)视频也不会启动它。

+1

https://webkit.org/blog/6784/new-video-policies-for-ios/ – CBroe

+0

@CBroe我知道这个网页。这篇文章介绍了iOS10的变化。这对我的情况有什么帮助? – lesssugar

+1

它也明确指出,_“在iOS 9上,'

回答

0

就像@CBroe告诉你在他的评论,读他把链接(动机部分):

关于用户手势要求的说明:当我们说一个动作必须发生“为用户手势的结果“,我们的意思是,例如,导致调用video.play()的JavaScript必须直接由touchend,click,doubleclick或keydown事件的处理程序产生。因此,button.addEventListener('click',()=> {video.play();})将满足用户的手势要求。 video.addEventListener('canplaythrough',()=> {video.play();})不会。

所以it basicaly说,你不能使用任何事件或用户的行动开始播放视频。

那么你的 '滚动' 事件不能工作^^