event.target не работает на Firefox - PullRequest
       37

event.target не работает на Firefox

16 голосов
/ 17 сентября 2011
 var x = event.target||event.srcElement;
 document.getElementById(x.id).style.left =  200 + "px" ;
 document.getElementById(x.id).style.top  =  100 + "px" ;

Отлично работает на Google Chrome и IE, но не на Firefox. Пробовал на гугле. Google говорит event.srcElement (работает в IE, но не в Firefox), поэтому я добавил event.target, но все еще не работает. Есть ли какие-то изменения, которые мне нужно сделать, чтобы работать на Firefox? Кстати, я использую версию 3.5 Firefox.

       function up()
           {
                dragok = false;
                document.onmousemove = null;
                var x = event.target||event.srcElement;
                document.getElementById(x.id).style.left= 200 + "px" ;
                document.getElementById(x.id).style.top= 100 + "px" ;
           } 

Пожалуйста, помогите мне заставить его работать на firefox

Ответы [ 3 ]

43 голосов
/ 17 сентября 2011

Убедитесь, что вы определили event как формальный параметр для обработчика.

IE определяет его глобально, а Chrome определяет его в обоих местах, поэтому он работает в любом случае, но Firefox определяет его только как параметр функции.

function up( e ) {
    //       ^-----------------------------------------------------+
    if( !e ) e = window.event; // <---needed this --- and this ->--+

    dragok = false;
    document.onmousemove = null;
    var x = e.target||e.srcElement; // <--- and these
    document.getElementById(x.id).style.left= 200 + "px" ;
    document.getElementById(x.id).style.top= 100 + "px" ;
} 
1 голос
/ 22 января 2015

Я решил свою проблему с помощью Jquery.Например, чтобы получить идентификатор элемента, вы можете использовать:

var x = $(this).attr('id');
0 голосов
/ 12 января 2018

Это решение для работы в браузере Firefox тоже.При запуске действия keydown его свойство event устанавливается равным глобальной переменной, например:

 var keyEvent=null; 

. Присвойте свойству event значение keyEvent, а .item - целевой элемент.

  $(document).on("keydown",'.item', function(e){ 

                keyEvent=e;                                    

        },this))

затем. Используйте keyEvent в своем коде.

     function up( e ) {
           if( !e ) e = keyEvent;  
             dragok = false;
             document.onmousemove = null;
             var x = e.target||e.srcElement; 
             document.getElementById(x.id).style.left= 200 + "px" ;
             document.getElementById(x.id).style.top= 100 + "px" ;
         }

Примечание : не пытайтесь установить для свойства event глобальную переменную window.

...