scaled-target-subframe.html (841B)
1 <!DOCTYPE html> 2 <style> 3 html, body { 4 margin: 0; 5 } 6 #target { 7 width: 100px; 8 height: 100px; 9 } 10 </style> 11 12 <div id="target">target</div> 13 14 <script> 15 var delay = 100; 16 var results = []; 17 18 function waitForNotification(f) { 19 setTimeout(() => { 20 requestAnimationFrame(function () { 21 requestAnimationFrame(function () { 22 setTimeout(f) 23 }) 24 }) 25 }, delay) 26 } 27 28 window.addEventListener("message", event => { 29 waitForNotification(() => { 30 window.parent.postMessage(results.map(e => e.isVisible), "*"); 31 results = []; 32 }); 33 }); 34 35 onload = () => { 36 var target = document.getElementById("target"); 37 var observer = new IntersectionObserver(entries => { 38 results = entries; 39 }, {trackVisibility: true, delay: delay}); 40 observer.observe(document.getElementById("target")); 41 window.parent.postMessage("", "*"); 42 }; 43 </script>