fixed-position-iframe-scroll.html (1619B)
1 <!doctype html> 2 <meta name="viewport" content="width=device-width,initial-scale=1"> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="./resources/intersection-observer-test-utils.js"></script> 6 <div style="position: fixed; top: 0; left: 0"> 7 <iframe id="iframe" style="width: 300px; height: 300px; border: none" 8 srcdoc="<style>body {margin: 0}</style> 9 <div id='target' style='width: 100px; height: 100px'></div>"> 10 </iframe> 11 </div> 12 <div id="log" style="height: 2000px"></div> 13 <script> 14 var entries = []; 15 16 iframe.onload = () => { 17 runTestCycle(function() { 18 var observer = new IntersectionObserver(function(changes) { 19 entries = entries.concat(changes) 20 }); 21 observer.observe(iframe.contentDocument.getElementById('target')); 22 entries = entries.concat(observer.takeRecords()); 23 assert_equals(entries.length, 0, 'No initial notifications.'); 24 runTestCycle(step0, 'First rAF.'); 25 }, 'Fixed-position intersection observer on scroll'); 26 }; 27 28 function step0() { 29 window.scrollTo(0, 1000); 30 runTestCycle(step1, 'scrollTo(0, 1000)'); 31 checkLastEntry(entries, 0, 32 [0, 100, 0, 100, 0, 100, 0, 100, 0, 33 document.documentElement.clientWidth, 0, document.documentElement.clientHeight, 34 true]); 35 } 36 37 function step1() { 38 window.scrollTo(0, 0); 39 checkLastEntry(entries, 0, 40 [0, 100, 0, 100, 0, 100, 0, 100, 0, 41 document.documentElement.clientWidth, 0, document.documentElement.clientHeight, 42 true]); 43 } 44 </script>