<head>
<script type="text/javascript">
function rectsShouldBeEqual(baseline, other, outputElt)
{
if (baseline.left != other.left ||
baseline.top != other.top ||
baseline.right != other.right ||
baseline.bottom != other.bottom)
outputElt.innerHTML = '<span style="color:red;"><b>FAIL<BR></b></span>' +
"left should be " + baseline.left + " but is " + other.left + "<BR>" +
"top should be " + baseline.top + " but is " + other.top + "<BR>" +
"right should be " + baseline.right + " but is " + other.right + "<BR>" +
"bottom should be " + baseline.bottom + " but is " + other.bottom;
else
outputElt.innerHTML = '<span style="color:green;"><b>PASS</b></span>';
}
function testGetClientBoundingRect(zoom)
{
var baseline = document.getElementById("baseline1");
var moveme = document.getElementById("moveme1");
var bounds = baseline.getBoundingClientRect();
moveme.style.left = bounds.left / zoom;
moveme.style.top = bounds.top / zoom;
moveme.style.width = (bounds.right - bounds.left) / zoom;
moveme.style.height = (bounds.bottom - bounds.top) / zoom;
var newBounds = moveme.getBoundingClientRect();
rectsShouldBeEqual(bounds, newBounds, document.getElementById("results1"));
}
function testGetClientRects(zoom)
{
var baseline = document.getElementById("baseline2");
var moveme = document.getElementById("moveme2");
var boundsList = baseline.getClientRects();
moveme.style.left = boundsList[0].left / zoom;
moveme.style.top = boundsList[0].top / zoom;
moveme.style.width = (boundsList[0].right - boundsList[0].left) / zoom;
moveme.style.height = (boundsList[0].bottom - boundsList[0].top) / zoom;
var newBoundList = moveme.getClientRects();
rectsShouldBeEqual(boundsList[0], newBoundList[0], document.getElementById("results2"));
}
function runTest()
{
document.body.style.zoom = "0.9";
testGetClientBoundingRect(0.9);
testGetClientRects(0.9);
}
</script>
</head>
<body onload="runTest();">
<p>Tests that these functions account for full page zoom.<br>There should be no red visible.</p>
<table width="100%"><tr><td width="200px">getClientBoundingRect():
<div id="baseline1" style="position:absolute; left:100px; top:100px; width:100px; height:100px; background-color:red;"></div>
<div id="moveme1" style="position:absolute; left:0px; top:0px; width:50px; height:50px; background-color:green;"></div>
<div id="results1" style="position:absolute; left:10px; top:220px">...</div>
</td><td>getClientRects():
<div id="baseline2" style="position:absolute; left:300px; top:100px; width:100px; height:100px; background-color:red;"></div>
<div id="moveme2" style="position:absolute; left:0px; top:0px; width:50px; height:50px; background-color:green;"></div>
<div id="results2" style="position:absolute; left:220px; top:220px">...</div>
</td>
</body>