Event.target не работает в Firefox
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.
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
Ответы
Ответ 1
Обязательно определите 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" ;
}
Ответ 2
Я решил проблему с помощью JQuery. Например, чтобы получить идентификатор элемента, который вы можете использовать:
var x = $(this).attr('id');
Ответ 3
Это решение для работы в браузере 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
.