Воспроизведение / пауза видео со звуком на перекрестке - Chrome - DOMException: play () не удалось, поскольку пользователь сначала не взаимодействовал с документом - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу воспроизвести видео, как только окно просмотра пользователя пересекается с видео, или приостановить его, как только видео выйдет из поля зрения. Мне удалось сделать это на Firefox, но, похоже, у Chrome есть некоторые проблемы.

Я получаю сообщение об ошибке в консоли:

Uncaught (в обещании ) DOMException: play () завершилась неудачно, потому что пользователь не взаимодействовал с документом первым.

Я немного погуглил и обнаружил, что есть загвоздка с muted = "muted" для автоматического воспроизведения видео. Это работает, но мне также нужен звук.

Я пытался программно включить звук, но он не работает. Кроме того, я пытался инициировать события и другие вещи в надежде, что это поможет, то есть создаст ложное положительное взаимодействие с пользователем, но не повезло.

Я спрашивал себя, как 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>
...