在Vimperator插件中模拟鼠标悬停

时间:2009-05-26 16:31:11

标签: javascript javascript-events mouseover 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。任何想法如何模拟鼠标都适用于大多数页面?

3 个答案:

答案 0 :(得分:23)

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

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

希望有所帮助

答案 1 :(得分:7)

如果有人碰到这个寻找框架不可知方式来触发任何HTML和鼠标事件(并设置一些选项,如果需要),请看一下:How to simulate a mouse click using JavaScript? < / p>

答案 2 :(得分:0)

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