I'm trying to simulate mouse click on some element through
sendMouseEvent() (I can't use element.dispatchEvent() for some
reasons).
I'm experiencing problems with passing correct parameters.
Say if I have a DOM element how can I find x,y for sendMouseEvent?
My current code is as follows:
function simulateClick(element) {
// get nsIDOMWindowUtils from content window
var win = element.ownerDocument.defaultView;
var req = win.QueryInterface(Ci.nsIInterfaceRequestor);
var utils = req.getInterface(Ci.nsIDOMWindowUtils);
var pos = findElementPosition(element);
var x = pos.x+win.scrollX, y = pos.y+win.scrollY;
utils.sendMouseEvent("mousedown", x, y, 0, 1, 0);
utils.sendMouseEvent("mouseup", x, y, 0, 1, 0);
}
function findElementPosition(element) {
var e = element;
var pos = {x: 0, y: 0};
while (e) {
var x = 0, y = 0, ee = e;
while (ee) {
x += ee.offsetLeft;
y += ee.offsetTop;
ee = ee.offsetParent;
}
pos.x += x;
pos.y += y;
e = e.ownerDocument.defaultView.frameElement;
}
pos.x += Math.round(element.offsetWidth/2);
pos.y += Math.round(element.offsetHeight/2);
return pos;
}
Thanks,
Denis
Is there a reason to not use getBoundingClientRect here?
-Boris