2009-05-26 12 views
24

Estoy intentando escribir un plugin de Vimperator para permitir el uso del modo de sugerencias para simular el mouse en los menús desplegables. Tengo el modo de sugerencias funcionando y puedo elegir correctamente los elementos que tienen eventos mouseover conectados. El problema es que mi función para simular que el mouse no funciona. Esto es lo que tengo actualmente:Simulate Mouse Over en el plugin de 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'); 
} 

El código anterior funciona para algunas páginas pero no para otras. Por ejemplo, no funciona en AccuWeather. ¿Alguna idea sobre cómo simular un mouse que funcionará para la mayoría de las páginas?

+0

Tengo el mismo problema. El plugin DejaClick para Firefox resuelve esto. No sé cómo. – Abhinav

+0

¿Alguna vez descubrió esto para vimperator? – Luke

+0

Desafortunadamente no. Nunca pude encontrar una manera confiable de mostrar los menúes del mouse para mostrar. – Stephan

Respuesta

0

Solo puede activar el evento mouseover en campos/elementos que tienen un evento mouseover vinculado a ellos. No puedes simplemente secuestrar el mouse.

+0

Lo sé y los únicos elementos que coinciden con las sugerencias son los elementos con un atributo onmouseover. He comprobado que el elemento que se pasa a la función tiene un atributo onmouseover que es una función. Todo parece correcto, excepto por el hecho de que el menú no aparece en algunas páginas. – Stephan

23

aquí hay un código para empezar a crear el evento, más simple y trabaja para más navegadores (si no es necesario especificar las coordenadas exactas del ratón)

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

esperanza de que ayuda a

+0

acaba de buscar vimperator, veo que es un complemento de Firefox, así que supongo que la compatibilidad no es un problema;) –

+0

Usted está escribiendo que la compatibilidad no es un problema. Lamentablemente, eso no parece funcionar tampoco. Simplemente no puedo entender por qué algunos sitios web activan correctamente el evento mouseover y otros no. – Stephan

+0

¿Hay alguna manera de hacer que esto funcione en Chrome? – Cristy

7

En caso Alguien tropieza con esto buscando un marco agnóstico forma de disparar cualquier evento HTML y Mouse (y establecer algunas opciones, si es necesario), echar un vistazo aquí: How to simulate a mouse click using JavaScript?

+0

Alguien que busca lo que ha vinculado simplemente se topó con esto. ¡Gracias! :) – stackular