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

Działa dobrze na Google Chrome i IE, ale nie na firefox. Próbowałem go w google. google mówi event.srcElement (działa na IE, ale nie na firefox), więc dodałem event.target, ale nadal nie działa. Czy muszę już pracować nad firefox? Przy okazji używam wersji 3.5 firefox.event.target nie działa na 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" ; 
      } 

Proszę mi pomóc, aby to działało na firefox

+0

czy można utworzyć http://jsfiddle.net/ lub http://jsbin.com/ przykład pełnego kodu, który "nie działa"? –

+0

Czy mógłbyś pokazać więcej kodu (najlepiej demo JSFiddle)? BTW, nie ma potrzeby szukania 'x'' id', a następnie szukania określonego elementu przez 'id', możesz po prostu pracować z' x.style.left'. – duri

Odpowiedz

34

Upewnij zdefiniować event jako formalny parametr do obsługi.

IE definiuje go globalnie, a Chrome definiuje go w obu miejscach, więc działa w dowolny sposób, ale Firefox definiuje go tylko jako parametr funkcji.

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

Rozwiązałem mój problem używając Jquery. Na przykład, aby uzyskać identyfikator elementu, którego można użyć:

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

To rozwiązanie działa również w przeglądarce Firefox. Po uruchomieniu akcji keydown ustawi ona właściwość event na zmienną globalną podobną do tej.

var keyEvent=null; 

Przypisywanie że event nieruchomość do keyEvent i .item jest elementu docelowego.

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

       keyEvent=e;          

     },this)) 

następnie użyj keyEvent w kodzie.

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

Uwaga: Nie staraj się ustawić właściwość event do globalnej zmiennej window.