2009-05-26 5 views
24

Ich versuche, ein Vimperator-Plugin zu schreiben, um die Verwendung von Hints-Modus zu ermöglichen, Maus über Drop-down-Menüs zu simulieren. Ich habe den Tipp-Modus funktioniert und kann Elemente mit Mouseover-Ereignissen korrekt auswählen. Das Problem ist meine Funktion zu simulieren, die Maus über funktioniert nicht. Dies ist, was ich derzeit habe:Simulieren Mouseover in Vimperator plugin

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'); 
} 

Der obige Code funktioniert für einige Seiten, aber nicht für andere. Zum Beispiel funktioniert es nicht auf AccuWeather. Irgendwelche Ideen, wie man eine Maus darüber simuliert, funktionieren für die meisten Seiten?

+0

Ich habe das gleiche Problem. Das DejaClick-Plugin für Firefox löst dies. Ich weiß nicht wie. – Abhinav

+0

Haben Sie das jemals für vimperator herausgefunden? – Luke

+0

Leider nicht. Ich konnte nie einen zuverlässigen Weg finden, um Maus-Over-Menüs zu zeigen. – Stephan

Antwort

0

Sie können mouseover-Ereignisse nur für Felder/Elemente auslösen, an die ein mouseover-Ereignis gebunden ist. Sie können nicht einfach die Maus entführen.

+0

Ich weiß das und die einzigen Elemente, die den Hinweisen entsprechen, sind Elemente mit einem onmouseover-Attribut. Ich habe überprüft, dass das Element, das an die Funktion übergeben wird, ein onmouseover-Attribut hat, das eine Funktion ist. Alles sieht korrekt aus, mit der Ausnahme, dass das Menü auf einigen Seiten nicht angezeigt wird. – Stephan

23

hier einige Code zu beginnen um das Ereignis zu schaffen, einfacher und arbeitet für mehr Browsern

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

Hoffnung (wenn Sie nicht genau Mauskoordinaten angeben müssen), die

+0

nur nachgeschlagen vimperator, ich sehe, dass es ein Firefox-Plugin ist, so denke ich, Kompatibilität ist kein Problem;) –

+0

Sie sind schreiben zu beachten, dass die Kompatibilität kein Problem ist. Leider scheint das auch nicht zu funktionieren. Ich kann einfach nicht verstehen, warum einige Webseiten das mouseover-Ereignis korrekt auslösen und andere nicht. – Stephan

+0

Gibt es eine Möglichkeit, dies in Chrome zu realisieren? – Cristy

7

Im Fall hilft jemand stößt in diese Suche nach einem Rahmen agnostic Weg, um HTML-und Maus-Ereignis (und stellen Sie einige Optionen, falls erforderlich), werfen Sie einen Blick hier: How to simulate a mouse click using JavaScript?

+0

Jemand, der nach dem sucht, was Sie verbunden haben, stieß gerade an. Vielen Dank! :) – stackular