24

我正在尝试编写一个 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。任何想法如何模拟鼠标悬停适用于大多数页面?

4

3 回答 3

23

这是一些用于创建事件的代码,更简单并且适用于更多浏览器(如果您不需要指定精确的鼠标坐标)

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

希望有帮助

于 2009-05-28T03:55:17.457 回答
7

如果有人遇到这种情况,正在寻找一种与框架无关的方式来触发任何 HTML 和鼠标事件(并在需要时设置一些选项),请看这里:如何使用 JavaScript 模拟鼠标点击?

于 2011-05-27T23:19:57.513 回答
0

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

于 2009-05-26T16:35:36.173 回答