| const VISIBILITY_COVERAGE_FRACTION = 0.25; | |
| window.addEventListener("DOMContentLoaded", () => { | |
| const players = document.querySelectorAll("[data-auto-play]"); | |
| players.forEach((player) => { | |
| if (!(player instanceof HTMLVideoElement)) return; | |
| let loaded = false; | |
| new IntersectionObserver((entries) => { | |
| entries.forEach((entry) => { | |
| if (!loaded && entry.intersectionRatio > VISIBILITY_COVERAGE_FRACTION) { | |
| player.removeAttribute("preload"); | |
| player.setAttribute("autoplay", ""); | |
| loaded = true; | |
| }; | |
| }); | |
| }, { threshold: VISIBILITY_COVERAGE_FRACTION }) | |
| .observe(player); | |
| }); | |
| }); | |