提问者:小点点

在交叉点播放/暂停有声音的视频-Chrome-DOMException:Play()失败,因为用户没有首先与文档交互


我想在用户视口与视频相交时播放视频,或者在视频离开视图时暂停视频。我设法在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>

共1个答案

匿名用户

阻止浏览器中的任何垃圾邮件。只需添加此$(正文)。触发器('click')mute=“true”在您的attr视频中,将找到它。