2009-05-26 80 views
24

我正在尝试编写一个Vimperator插件,以允许使用提示模式在下拉菜单上模拟鼠标。我有提示模式工作,并可以正确选择附加鼠标悬停事件的元素。问题是我的功能模拟鼠标无法正常工作。这是我目前所拥有的:在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'); 
} 

上面的代码适用于某些页面,但不适用于其他页面。例如,它不适用于AccuWeather。任何想法如何模拟鼠标在大多数页面上工作?

+0

我有同样的问题。 Firefox的DejaClick插件解决了这个问题。不知道如何。 – Abhinav 2010-01-01 12:25:49

+0

你有没有想过这个vimperator? – Luke 2010-05-19 19:10:02

+0

不幸的是没有。我从来没有找到一个可靠的方法来获取鼠标悬停菜单。 – Stephan 2010-05-19 19:37:40

回答

0

您只能在绑定了鼠标悬停事件的字段/元素上触发mouseover事件。你不能劫持鼠标。

23

这里的一些代码,开始创建事件,更简单,更多的浏览器上运行(如果你不需要指定精确的鼠标坐标)

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

希望帮助