Need help with nsIDOMWindowUtils.sendMouseEvent

disya2 <[email protected]>
Newsgroups gmane.comp.mozilla.devel.dom
Organization http://groups.google.com
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.