2011-09-17 18 views
13
var x = event.target||event.srcElement; 
document.getElementById(x.id).style.left = 200 + "px" ; 
document.getElementById(x.id).style.top = 100 + "px" ; 

trabaja muy bien en Google Chrome y IE pero no en Firefox. Lo intenté en google. google dice event.srcElement (funciona en IE pero no en Firefox) así que he agregado event.target pero todavía no funciona. ¿Hay más cambios que deba hacer para trabajar en Firefox? Por cierto estoy usando la versión 3.5 de Firefox.event.target no funciona en 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" ; 
      } 

me puede ayudar a hacer que funcione en Firefox

+0

¿podría hacer un http://jsfiddle.net/ o http://jsbin.com/ ejemplo del código completo que "no funciona"? –

+0

¿Podría mostrar más código (idealmente una demostración de JSFiddle)? Por cierto, no hay necesidad de buscar el 'id' de' x' y luego mirar hacia atrás para un elemento en particular con el 'id', puedes simplemente trabajar con 'x.style.left'. – duri

Respuesta

34

Asegúrese de definir event como un parámetro formal al controlador.

IE lo define globalmente, y Chrome lo define en ambos lugares, por lo que funciona de cualquier manera, pero Firefox solo lo define como un parámetro de función.

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

Resolví mi problema con Jquery. Por ejemplo, para obtener la identificación de un elemento que puede usar:

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

Esta solución también funciona en el navegador Firefox. Cuando inicie keydown acción, entonces establece la propiedad event en una variable global como esta.

var keyEvent=null; 

Asignar que event propiedad a keyEvent y .item es elemento de destino.

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

       keyEvent=e;          

     },this)) 

then.Use keyEvent en su código.

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

Nota: No trate de establecer la propiedad event a la variable global del window.

Cuestiones relacionadas