Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE HTML>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/elementsFromPoint.js"></script>
<style>
html {
overflow-y: scroll;
overflow-x: scroll;
}
html, body {
margin: 0;
padding: 0;
}
body {
width: 100%;
height: 100%;
}
#simpleDiv {
width: 200px;
height: 200px;
background-color: rgba(0,255,0,0.5);
}
#beyondTopLeft {
position: absolute;
transform: translate3d(-100px, -100px, 10px);
left: 0;
top: 0;
width: 100px;
height: 100px;
background-color: rgba(0,0,0,0.1);
}
</style>
<body>
<div id="beyondTopLeft"></div>
<div id="simpleDiv"></div>
<script>
test(function() {
assertElementsFromPoint('document', 300, 300, [document.documentElement]);
}, "The root element is the last element returned for otherwise empty queries within the viewport");
test(function() {
var simpleDiv = document.getElementById('simpleDiv');
var simpleRect = simpleDiv.getBoundingClientRect();
var simpleCoords = (simpleRect.right - 1) + ', ' + (simpleRect.bottom - 1);
assertElementsFromPoint('document', simpleRect.right - 1, simpleRect.bottom - 1,
[simpleDiv, document.body, document.documentElement]);
}, "The root element is the last element returned for valid queries");
test(function() {
assertElementsFromPoint('document', window.innerWidth + 1, window.innerHeight + 1, []);
assertElementsFromPoint('document', -1, -1, []);
assertElementsFromPoint('document', 1, -1, []);
assertElementsFromPoint('document', -1, 1, []);
}, "An empty sequence is returned for queries outside the viewport");
</script>
</body>