在 Vimperator 插件中模拟鼠标悬停
Posted
技术标签:
【中文标题】在 Vimperator 插件中模拟鼠标悬停【英文标题】:Simulate Mouse Over in Vimperator plugin 【发布时间】:2010-10-29 00:51:36 【问题描述】:我正在尝试编写一个 Vimperator 插件以允许使用提示模式来模拟鼠标悬停在下拉菜单上。我的提示模式正常工作,并且可以正确选择附加了mouseover
事件的元素。问题是我模拟鼠标悬停的功能不起作用。这是我目前拥有的:
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。任何想法如何模拟鼠标悬停适用于大多数页面?
【问题讨论】:
我有同样的问题。 Firefox 的 DejaClick 插件解决了这个问题。不知道怎么弄。 你有没有为 vimperator 解决这个问题? 很遗憾没有。我从来没有找到一种可靠的方法来显示鼠标悬停菜单。 凹凸。有没有办法在 Vimperator 中模拟鼠标悬停? @Stephan 你在这方面有什么进展吗? 【参考方案1】:这里有一些用于创建事件的代码,更简单并且适用于更多浏览器(如果您不需要指定精确的鼠标坐标)
if( document.createEvent )
var evObj = document.createEvent('MouseEvents');
evObj.initEvent( 'mouseover', true, false );
elem.dispatchEvent(evObj);
else if( document.createEventObject )
elem.fireEvent('onmouseover');
希望对你有帮助
【讨论】:
刚刚查了一下 vimperator,我发现它是一个 firefox 插件,所以我想兼容性不是问题 ;) 您写信指出兼容性不是问题。不幸的是,这似乎也不起作用。我只是不明白为什么有些网站正确地触发了鼠标悬停事件而有些则没有。 如果您需要设置更多特定于鼠标的事件属性,您可能希望使用initMouseEvent
而不是initEvent
。见developer.mozilla.org/en/docs/DOM/event.initMouseEvent【参考方案2】:
如果有人遇到这种情况,正在寻找一种与框架无关的方式来触发任何 html 和鼠标事件(并在需要时设置一些选项),请查看此处:How to simulate a mouse click using javascript?
【讨论】:
有人在寻找您链接的内容时遇到了这个问题。谢谢! :)【参考方案3】:您只能在绑定了 mouseover 事件的字段/元素上触发 mouseover 事件。你不能只是劫持鼠标。
【讨论】:
我知道,唯一与提示匹配的元素是具有 onmouseover 属性的元素。我已经检查过传递给函数的元素是否有一个 onmouseover 属性,它是一个函数。一切看起来都是正确的,除了菜单没有在某些页面上下拉。以上是关于在 Vimperator 插件中模拟鼠标悬停的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 phantomJS 模拟鼠标悬停在 HTML 元素上
如何使用 vimperator 与使用子菜单的网站进行交互? [关闭]