【问题标题】:Firefox 5 dispatchEvent in FirefoxFirefox 中的 Firefox 5 dispatchEvent
【发布时间】:2021-02-27 07:54:02
【问题描述】:

我有一些代码使用dispatchEvent 来模拟点击,相同的代码在 Chrome 中运行良好,但在 Firefox 中无法运行。代码如下:

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

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

【问题讨论】:

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


    【解决方案1】:

    由于您的事件看起来是鼠标事件,您可能宁愿尝试使用鼠标事件,例如以下示例:

    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 的教程;我想翻译起来很容易。

    【讨论】:

    • 还是一样。我只是得到true 作为dispatchEvent 的返回值,没有任何反应。
    • @david:即使您看不懂法语,您也可以阅读the very last chapter
    • @david:谢谢。在 bwn 中,best link 我知道 DOM 事件。
    【解决方案2】:

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

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

    恐怕我不知道有什么办法可以绕过它。

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 2014-12-18
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2011-09-27
      • 2011-10-22
      相关资源
      最近更新 更多