summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html')
-rw-r--r--testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html50
1 files changed, 50 insertions, 0 deletions
diff --git a/testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html b/testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html
new file mode 100644
index 0000000000..e1a6c85f1c
--- /dev/null
+++ b/testing/web-platform/tests/scroll-to-text-fragment/iframe-target.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<title>Inner document for use in iframes.sub.html test</title>
+<script>
+ function isInView(element) {
+ let rect = element.getBoundingClientRect();
+ return rect.top >= 0 && rect.top <= window.innerHeight
+ && rect.left >= 0 && rect.left <= window.innerWidth;
+ }
+
+ function postResult() {
+ let position = 'unknown';
+ if (window.scrollY == 0)
+ position = 'top';
+ else if (isInView(document.getElementById('target')))
+ position = 'target';
+ else if (isInView(document.getElementById('elementid')))
+ position = 'elementid';
+
+ let results = {
+ scrollPosition: position,
+ href: window.location.href,
+ };
+
+ window.top.postMessage(results, "*");
+ }
+
+ window.addEventListener('message', (e) => {
+ if (e.data == 'getResult') {
+ // rAF twice in case there is any asynchronicity in scrolling to the
+ // target.
+ window.requestAnimationFrame(() => {
+ window.requestAnimationFrame(postResult);
+ })
+ } else if (e.data == 'reset') {
+ window.location.hash = '';
+ window.scrollTo(0, 0);
+ window.top.postMessage('', "*");
+ }
+ });
+</script>
+<style>
+ p {
+ margin-top: 400vh;
+ margin-bottom: 400vh;
+ }
+</style>
+<body>
+ <p id="target">Target Text</p>
+ <div id="elementid">DIV</div>
+</body>