63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
|
|
if (window.testRunner)
|
|
testRunner.waitUntilDone();
|
|
|
|
function mousemoved(e)
|
|
{
|
|
var resultBox = document.getElementById('mousepos');
|
|
var offsets = 'element id: ' + e.target.id + '<br> clientX: ' + e.clientX + ' clientY: ' + e.clientY + '<br>';
|
|
offsets += 'offsetX: ' + e.offsetX + ' offsetY: ' + e.offsetY;
|
|
resultBox.innerHTML = offsets;
|
|
}
|
|
|
|
function dispatchEvent(clientX, clientY, expectedElementID, expectedOffsetX, expectedOffsetY)
|
|
{
|
|
var ev = document.createEvent("MouseEvent");
|
|
ev.initMouseEvent("click", true, true, window, 1, 1, 1, clientX, clientY, false, false, false, false, 0, document);
|
|
ev.expectedElement = expectedElementID;
|
|
ev.expectedOffsetX = expectedOffsetX;
|
|
ev.expectedOffsetY = expectedOffsetY;
|
|
var target = document.elementFromPoint(ev.pageX, ev.pageY);
|
|
target.dispatchEvent(ev);
|
|
}
|
|
|
|
function clicked(event)
|
|
{
|
|
var element = event.target;
|
|
|
|
var result;
|
|
if (element.id == event.expectedElement &&
|
|
event.offsetX == event.expectedOffsetX &&
|
|
event.offsetY == event.expectedOffsetY)
|
|
result = '<span style="color: green">PASS: event at (' + event.clientX + ', ' + event.clientY + ') hit ' + element.id + ' at offset (' + event.offsetX + ', ' + event.offsetY + ')</span>';
|
|
else
|
|
result = '<span style="color: red">FAIL: event at (' + event.clientX + ', ' + event.clientY + ') expected to hit ' + event.expectedElement + ' at (' + event.expectedOffsetX + ', ' + event.expectedOffsetY + ') but hit ' + element.id + ' at (' + event.offsetX + ', ' + event.offsetY + ')</span>';
|
|
|
|
log(result);
|
|
}
|
|
|
|
function log(s)
|
|
{
|
|
var resultsDiv = document.getElementById('results');
|
|
resultsDiv.innerHTML += s + '<br>';
|
|
}
|
|
|
|
function runTest()
|
|
{
|
|
// In non-test mode, show the mouse coords for testing
|
|
if (window.testRunner)
|
|
document.getElementById('mousepos').style.display = 'none';
|
|
else
|
|
document.body.addEventListener('mousemove', mousemoved, false);
|
|
|
|
test();
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
|
|
window.addEventListener('load', function() {
|
|
window.setTimeout(runTest, 0);
|
|
}, false);
|
|
|
|
|