Я хочу воспроизвести видео, как только окно просмотра пользователя пересекается с видео, или приостановить его, как только видео выйдет из поля зрения. Мне удалось сделать это на 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>