Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Need help with nsIDOMWindowUtils.sendMouseEvent

48 views
Skip to first unread message

disya2

unread,
Aug 19, 2009, 11:18:23 AM8/19/09
to
Hi,

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

Boris Zbarsky

unread,
Aug 24, 2009, 9:28:15 AM8/24/09
to
disya2 wrote:
> var pos = findElementPosition(element);

Is there a reason to not use getBoundingClientRect here?

-Boris

0 new messages