v2-subframe.html (743B)
1 <!DOCTYPE html> 2 <div id="target">target</div> 3 <script> 4 var delay = 100; 5 var results = []; 6 7 function waitForNotification(f) { 8 setTimeout(() => { 9 requestAnimationFrame(function () { 10 requestAnimationFrame(function () { 11 setTimeout(f) 12 }) 13 }) 14 }, delay) 15 } 16 17 window.addEventListener("message", event => { 18 waitForNotification(() => { 19 window.top.postMessage(results.map(e => e.isVisible), "*"); 20 results = []; 21 }); 22 }); 23 24 onload = () => { 25 var target = document.getElementById("target"); 26 var observer = new IntersectionObserver(entries => { 27 results = entries; 28 }, {trackVisibility: true, delay: delay}); 29 observer.observe(document.getElementById("target")); 30 window.top.postMessage("", "*"); 31 }; 32 </script>