2009-05-26 6 views
24

J'essaye d'écrire un plugin Vimperator pour permettre l'utilisation du mode hints pour simuler la souris sur les menus déroulants. J'ai le mode hints qui fonctionne et peut choisir correctement les éléments qui ont des événements mouseover ci-joint. Le problème est que ma fonction de simulation de la souris ne fonctionne pas. C'est ce que j'ai actuellement:Simulation de la souris dans le plugin Vimperator

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

Le code ci-dessus fonctionne pour certaines pages mais pas pour d'autres. Par exemple, cela ne fonctionne pas sur AccuWeather. Des idées comment simuler une souris sur cela fonctionnera pour la plupart des pages?

+0

Am ayant la même question. Le plugin DejaClick pour Firefox résout cela. Je ne sais pas comment. – Abhinav

+0

Avez-vous déjà trouvé cela pour vimperator? – Luke

+0

Malheureusement non. Je n'ai jamais pu trouver un moyen fiable d'afficher les menus de souris. – Stephan

Répondre

0

Vous ne pouvez déclencher l'événement mouseover que sur les champs/éléments auxquels un événement mouseover est lié. Vous ne pouvez pas juste détourner la souris.

+0

Je le sais et les seuls éléments qui correspondent aux indices sont des éléments avec un attribut onmouseover. J'ai vérifié que l'élément qui est passé à la fonction a un attribut onmouseover qui est une fonction. Tout semble correct sauf pour le fait que le menu ne tombe pas sur certaines pages. – Stephan

23

est un code ici pour commencer à créer l'événement, plus simple et fonctionne pour d'autres navigateurs (si vous n'avez pas besoin de spécifier les coordonnées de souris exactes)

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

espoir qui aide

+0

juste cherché vimperator, je vois que c'est un plugin firefox donc je suppose que la compatibilité n'est pas un problème;) –

+0

Vous écrivez à noter que la compatibilité n'est pas un problème. Malheureusement, cela ne semble pas fonctionner non plus. Je n'arrive pas à comprendre pourquoi certains sites Web déclenchent correctement l'événement mouseover et d'autres non. – Stephan

+0

Existe-t-il un moyen de faire fonctionner cela sur Chrome? – Cristy

7

En cas quelqu'un se cogne dans cette recherche d'un, jetez un oeil ici cadre agnostique façon de tirer tout HTML et l'événement de la souris (et définir certaines options, le cas échéant): How to simulate a mouse click using JavaScript?

+0

Quelqu'un à la recherche de ce que vous avez lié à tout simplement tomber dessus. Merci! :) – stackular

Questions connexes