Firefox 5 dispatchEvent无法正常工作

时间:2011-06-25 00:00:13

标签: firefox javascript-events event-dispatching firefox-5

我有一些使用dispatchEvent来模拟点击的代码,同样的确切代码在Chrome中运行良好,但在Firefox中无效。这是代码:

var evt = document.createEvent("MouseEvents");
evt.initEvent("click",true,true);
jQuery("a:contains(Next)")[0].dispatchEvent(evt);

我点击了一个加载另一个页面的链接,并且该页面在Chrome中正常加载,但是当我在Firebug中运行此代码或者当我将其作为书签执行时,Firefox完全没有任何作用。我还尝试通过设置MDC文档中显示的所有选项来完成长形式的事件初始化,但这并没有做任何事情。我到底错在了什么?

2 个答案:

答案 0 :(得分:3)

由于您的活动看起来像是一个鼠标事件,您可能宁愿尝试使用鼠标事件,例如:

var oEvt = (document.createEvent)? document.createEvent('MouseEvents') : document.createEventObject();    
       // W3C
        if (oEvt.initMouseEvent) 
            oEvt.initMouseEvent(
                /* type*/            'mouseup',
                /* bubble*/            true,
                /* cancel*/            true,
                /* AbstractView*/     window,
                /* detail */        10,
                /* screenX */        20,
                /* screenY */        30, 
                /* clientX */        40,
                /* clientY */        50,
                /* ctrlKey */        false,
                /* altKey */        false,
                /* shiftKey */        true,
                /* metaKey */        false,
                /* button */        0,
                /* relatedTarget*/    null ) ;
        // MSIE
        else {
                var oEvt = document.createEventObject(); 
                oEvt.detail = 10;
                oEvt.screenX = 20;
                oEvt.screenY = 30;
                oEvt.clientX = 40;
                oEvt.clientY = 50;
                oEvt.ctrlKey = false;
                oEvt.altKey = false;
                oEvt.shiftKey = true;
                oEvt.metaKey = false;
                oEvt.button = 0;
                oEvt.relatedTarget = null;
        }

请参阅W3C Mouse event types

我还用法语撰写了关于firing DOM events的教程;我想它很容易翻译。

答案 1 :(得分:0)

这是Firefox中的一个错误,请参阅:

https://bugzilla.mozilla.org/show_bug.cgi?id=395917

我不知道如何解决这个问题我很害怕。