我想在用户视口与视频相交时播放视频,或者在视频离开视图时暂停视频。我设法在Firefox上做到了这一点,但Chrome似乎有一些问题。
我得到的是控制台中的错误:
未捕获(promise中)DomeException:play()失败,因为用户没有首先与文档交互。
我在谷歌上搜索了一下,发现有一个mute=“mute”可以自动播放视频。这很有效,但我也需要声音。
我曾尝试通过编程方式取消视频静音,但不起作用。此外,我还尝试触发事件和其他事情,希望它能起到作用,即创建假阳性用户交互,但没有运气。
我在问自己,YouTube如何实现声音自动播放(在任何用户交互之前)?
代码如下:
var onIntersection = function(entries, observer){
entries.forEach(function(entry){
if( entry.isIntersecting && entry.intersectionRatio >= 0.5){
entry.target.play();
}else{
entry.target.pause();
}
});
};
if( 'IntersectionObserver' in window ){
var observerOptions = {
threshold: [0, 0.5]
};
var observer = new IntersectionObserver(onIntersection, observerOptions);
$('video').each(function(){
observer.observe($(this)[0]);
});
}
HTML:
<video inline playsinline autoplay loop style>
<source src="..." type="video/mp4">
</video>
阻止浏览器中的任何垃圾邮件。只需添加此$(正文)。触发器('click')
或mute=“true”
在您的attr视频中,将找到它。