blob: bf69103112e41841f105cf80131863c3a6e25b15 [file] [log] [blame]
<!DOCTYPE html>
<div style="height:200px;"></div>
<script>
onload = () => {
let numRecords = 0;
let popup = window.open("root-bounds-popup.html");
popup.addEventListener("load", (event) => {
popup.postMessage("start", "*");
});
// The popup will send a "start" message after it has created an
// IntersectionObserver, and it will send an additional message for each
// IntersectionObserver notification it receives.
window.addEventListener("message", event => {
if (event.data == "start") {
let target = popup.document.getElementById("target");
target.remove();
document.body.appendChild(target);
requestAnimationFrame(() => {
document.scrollingElement.scrollTop = 1000;
// We send a "continue" message here to ensure that the popup window
// will run a lifecycle update, which is necessary to generate and
// deliver IntersectionObserver notifications.
popup.postMessage("continue", "*");
});
} else {
numRecords++;
// Forward all IntersectionObserver notifications on to the embedding
// window.
window.parent.postMessage(event.data, "*");
if (numRecords > 2)
window.parent.postMessage("done", "*");
}
});
};
</script>