Отправка Firefox 5 событие не работает - PullRequest
3 голосов
/ 25 июня 2011

У меня есть код, который использует dispatchEvent для имитации кликов, и тот же самый точный код прекрасно работает в Chrome, но не работает в Firefox. Вот код:

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

Я нажимаю на ссылку, которая загружает другую страницу, и страница загружается нормально в Chrome, но Firefox абсолютно ничего не делает, когда я запускаю этот код в Firebug или даже когда я выполняю его как букмарклет. Я также попробовал длинную форму инициализации события, установив все параметры, как показано в документации MDC, но это ничего не дает. Что именно я здесь не так делаю?

Ответы [ 2 ]

3 голосов
/ 25 июня 2011

Поскольку ваше событие выглядит как событие мыши, вы можете попробовать использовать событие мыши, как в следующем примере:

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 ; Я думаю, это легко перевести.

0 голосов
/ 24 апреля 2014

Это ошибка в Firefox, смотрите это:

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

Боюсь, я не знаю, как это обойти.

...