Simulate Mouse Over in Vimperator plugin
Asked Answered
H

3

24

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?

Honor answered 26/5, 2009 at 16:31 Comment(4)
Am having the same issue. The DejaClick plugin for Firefox solves this. Don't know how.Coy
Did you ever figure this out for vimperator?Orthography
Unfortunately no. I never could find a reliable way to get mouse overs menus to show.Honor
Bump. Is there a way to simulate mouse over in Vimperator? @Honor did you make any progress with this?Krystakrystal
I
23

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

Infundibuliform answered 28/5, 2009 at 3:55 Comment(3)
just looked up vimperator, i see that it's a firefox plugin so i guess compatibility is not an issue ;)Infundibuliform
You are write to note that compatibility isn't an issue. Unfortunately that doesn't appear to work either. I just can't understand why some website's correctly fire the mouseover event and some don't.Honor
You may want to use initMouseEvent instead of initEvent if you need to set more mouse-specific event properties. See developer.mozilla.org/en/docs/DOM/event.initMouseEventRuble
N
7

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?

Nitroglycerin answered 27/5, 2011 at 23:19 Comment(1)
Someone looking for what you linked to just bumped into this. Thanks! :)Quin
A
0

You may only trigger mouseover event on fields/elements that have a mouseover event bound to them. You can't just hijack the mouse.

Anti answered 26/5, 2009 at 16:35 Comment(1)
I know that and the only elements that match the hints are elements with a onmouseover attribute. I have checked that the element that is getting passed to the function has an onmouseover attribute that is a function. Everything looks correct except for the fact the the menu doesn't drop down on some pages.Honor

© 2022 - 2024 — McMap. All rights reserved.