2011-09-17 5 views
13
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. google говорит event.srcElement (работает на IE, но не на firefox), поэтому я добавил event.target, но все еще не работает. Есть ли какие-то изменения, которые мне нужно сделать для работы с firefox? Кстати, я использую 3.5 версию firefox.event.target не работает в 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" ; 
      } 

Пожалуйста, помогите мне, чтобы он работал на светлячок

+0

Вы могли бы создать http://jsfiddle.net/ или http://jsbin.com/ пример полного кода, который «не работает»? –

+0

Не могли бы вы показать больше кода (в идеале, JSFiddle demo)? BTW, нет необходимости искать '' '' 'id', а затем оглянуться назад на определенный элемент на' id', вы можете просто работать с 'x.style.left'. – duri

ответ

34

Убедитесь, что вы определить 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

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

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

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

var keyEvent=null; 

Присвоить, что event свойства keyEvent и .item является целевым элементом.

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

       keyEvent=e;          

     },this)) 

then.Use 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.

Смежные вопросы