3

クリックをシミュレートするために使用するコードがいくつかありますdispatchEvent。同じコードがChromeでは正常に機能しますが、Firefoxでは機能しません。コードは次のとおりです。

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

別のページをロードするリンクをクリックすると、Chromeでページが正常にロードされますが、Firebugでこのコードを実行した場合、またはブックマークレットとして実行した場合でも、Firefoxはまったく何もしません。また、MDCドキュメントに示されているようにすべてのオプションを設定して、イベントの初期化の長い形式を試しましたが、それでは何も起こりません。私はここで何を間違っているのですか?

4

2 に答える 2

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マウスのイベントタイプを参照してください

また、 DOMイベントの発生についてフランス語でチュートリアルを作成しました。翻訳するのは簡単だと思います。

于 2011-06-25T00:36:30.680 に答える
0

これは Firefox のバグです。次を参照してください。

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

私はそれを回避する方法を知りません。

于 2014-04-24T12:15:03.150 に答える