Firefox 中的 Firefox 5 调度事件

发布于 2024-11-17 00:06:33 字数 397 浏览 4 评论 0原文

我有一些代码使用 dispatchEvent 来模拟点击,同样的代码在 Chrome 中工作正常,但在 Firefox 中不起作用。代码如下:

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

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

I have some code that uses dispatchEvent to simulate clicks and the same exact code works fine in Chrome but doesn't work in Firefox. Here's the code:

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

I'm clicking on a link that loads another page and the page loads fine in Chrome but Firefox does absolutely nothing when I run this code in Firebug or even when I execute it as a bookmarklet. I've also tried the long form of event initializing by setting all the options as shown on the MDC docs but that doesn't do anything. What exactly am I doing wrong here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尹雨沫 2024-11-24 00:06:33

由于您的事件看起来是鼠标事件,因此您可能会尝试使用鼠标事件,如下例所示:

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 鼠标事件类型

我还用法语写了一篇关于 触发 DOM 事件 ;我想翻译起来很容易。

As your event looks to be a mouse event, you may rather try using a mouse event, like this example :

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;
        }

See W3C Mouse event types

I also wrote a tutorial in French language about firing DOM events ; I guess it's easy to get it translated.

诗化ㄋ丶相逢 2024-11-24 00:06:33

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

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

恐怕我不知道有什么方法可以解决它。

This is a bug in Firefox, see this:

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

I don't know of any way to get around it I'm afraid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文