<!DOCTYPE HTML> <html> <head> <style> #target5 { position: absolute; top: 0px; left: 0px; width: 20px; height: 20px; background: #f00; } </style> <body> <div id="target"></div> <script> var io = new IntersectionObserver(function(records) { var viewportWidth = document.documentElement.clientWidth || document.body.clientWidth; var viewportHeight = document.documentElement.clientHeight || document.body.clientHeight; var passed = records.length === 1 && records[0].rootBounds.top === 0 && records[0].rootBounds.left === 0 && records[0].rootBounds.right === viewportWidth && records[0].rootBounds.width === viewportWidth && records[0].rootBounds.bottom === viewportHeight && records[0].rootBounds.height === viewportHeight; window.opener.postMessage(passed, '*'); }); io.observe(document.getElementById("target")); </script> </body> </html>