Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simulate Mouse Over in Vimperator plugin

I'm attempting to write a Vimperator plugin to allow use of hints mode to simulate mouse over on drop down menus. I have the hints mode working and can correctly choose elements that have mouseover events attached. The problem is my function to simulate the mouse over is not working. This is what I currently have:

function SimulateMouseOver(elem)
{
    var evt = elem.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('mouseover',true,true,
        elem.ownerDocument.defaultView,0,0,0,0,0,
        false,false,false,false,0,null);
    var canceled = !elem.dispatchEvent(evt);
    if(canceled)
        alert('Event Cancelled');
}

The above code works for some pages but not for others. For example it doesn't work on AccuWeather. Any ideas how to simulate a mouse over that will work for most pages?

like image 723
Stephan Avatar asked May 26 '09 16:05

Stephan


2 Answers

here's some code to start with to create the event, simpler and works for more browsers (if you don't need to specify exact mouse coordinates)

        if( document.createEvent ) {
            var evObj = document.createEvent('MouseEvents');
            evObj.initEvent( 'mouseover', true, false );
            elem.dispatchEvent(evObj);
        } else if( document.createEventObject ) {
            elem.fireEvent('onmouseover');
        }

hope that helps

like image 80
Keith Bentrup Avatar answered Oct 18 '22 10:10

Keith Bentrup


In case anyone bumps into this looking for a framework agnostic way to fire any HTML and Mouse event (and set some options, if needed), have a look here: How to simulate a mouse click using JavaScript?

like image 38
TweeZz Avatar answered Oct 18 '22 10:10

TweeZz