web-dev-qa-db-fra.com

event.target ne fonctionne pas sur Firefox

 var x = event.target||event.srcElement;
 document.getElementById(x.id).style.left =  200 + "px" ;
 document.getElementById(x.id).style.top  =  100 + "px" ;

Fonctionne très bien sur Google Chrome et IE mais pas sur Firefox. J'ai essayé sur google. google dit event.srcElement (fonctionne sur IE mais pas sur Firefox). J'ai donc ajouté event.target mais je ne travaille toujours pas. Y a-t-il d'autres modifications à faire pour travailler sur Firefox? En passant, j'utilise la version 3.5 de 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" ;
           } 

S'il vous plaît aidez-moi à le faire fonctionner sur firefox

15
niko

Assurez-vous de définir event en tant que paramètre formel du gestionnaire.

IE le définit globalement, et Chrome le définit aux deux endroits, donc cela fonctionne dans les deux sens, mais Firefox le définit uniquement comme paramètre de fonction.

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" ;
} 
42
user113716

J'ai résolu mon problème en utilisant Jquery. Par exemple, pour obtenir l'identifiant d'un élément, vous pouvez utiliser:

var x = $(this).attr('id');
1
LipeTuga

Cette solution fonctionne également dans le navigateur Firefox. Lorsque vous démarrez l'action keydown, vous devez définir la propriété event sur une variable globale comme celle-ci.

 var keyEvent=null; 

Affectez cette propriété event à keyEvent et .item est l'élément cible.

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

                keyEvent=e;                                    

        },this))

then.Utilisez keyEvent dans votre code.

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

Remarque : N'essayez pas de définir la propriété event sur la variable globale window.

0
balaji s