| <!DOCTYPE html> | |
| <div id="target">target</div> | |
| <script> | |
| var delay = 100; | |
| var results = []; | |
| function waitForNotification(f) { | |
| setTimeout(() => { | |
| requestAnimationFrame(function () { | |
| requestAnimationFrame(function () { | |
| setTimeout(f) | |
| }) | |
| }) | |
| }, delay) | |
| } | |
| window.addEventListener("message", event => { | |
| waitForNotification(() => { | |
| window.parent.postMessage(results.map(e => e.isVisible), "*"); | |
| results = []; | |
| }); | |
| }); | |
| onload = () => { | |
| var target = document.getElementById("target"); | |
| var observer = new IntersectionObserver(entries => { | |
| results = entries; | |
| }, {trackVisibility: true, delay: delay}); | |
| observer.observe(document.getElementById("target")); | |
| window.parent.postMessage("", "*"); | |
| }; | |
| </script> |