event.toElement в IE8 и Firefox?

Я заметил, что в Chrome и IE9 для событий onmouseout есть свойство event.toElement (так что вы можете определить, на какой элемент сейчас указывает мышь).

Я не могу найти сопоставимое свойство в Firefox.

К сожалению, я не могу использовать jQuery для обработки этих событий, я должен использовать собственный js.

Любой совет будет принят во внимание.


person captainclam    schedule 22.12.2011    source источник
comment
Кстати, в jQuery это будет api.jquery.com/event.relatedTarget как в фаерфоксе.   -  person Barney Szabolcs    schedule 27.12.2013
comment
Я не уверен в этом @BarnabasSzabolcs. здесь, в 2018 году, e.relatedTarget и $(e).relatedTarget имеют значение null и undefined соответственно.   -  person boatcoder    schedule 22.05.2018


Ответы (6)


Вместо event.toElement вы должны использовать это:

event.target
person Azam Alvi    schedule 04.11.2013
comment
Этот ответ сработал для меня. currentTarget и relatedTarget могут дать разные результаты. например в событии клика для ‹a›, когда ‹ul›‹li›‹a›‹/a›‹/i›‹/ul› e.target дает мне ‹a› (так же, как e.toElement), но currentTarget и relatedTarget дает мне весь ‹ul›. - person AntonioOtero; 20.05.2014
comment
Это именно то, что мне нужно. Я новичок в javascript, поэтому я не знаю, почему я даже использовал toElement, возможно, какой-то пример кода, который я где-то видел. Цель — это именно то, что я хотел в первую очередь. - person danielson317; 10.11.2014
comment
Это лучший ответ. - person Armeen Harwood; 09.01.2015
comment
Вот хороший пример, если вы также хотите получить локальное имя Webkit/Chrome gist.github.com/aubreypwd/748ba5958ae3fde694a2 - person aubreypwd; 18.11.2015
comment
Не является ли target элементом, из которого мышь уходит? toElement будет элементом, на который мышь уходит, поэтому ответ будет неправильным? - person Alex; 06.07.2016

В Firefox это event.relatedTarget https://developer.mozilla.org/en/DOM:event.relatedTarget#1003983

person captainclam    schedule 22.12.2011
comment
Поскольку вы поняли, что IE действительно имеет event.toElement, удалите его ссылку из вопроса и ответа, чтобы избежать путаницы... это не сделает недействительными любые другие существующие ответы. - person T J; 14.09.2014
comment
К сведению: в IE11, похоже, нет event.toElement - person Andrew Liu; 19.12.2014
comment
Пожалуйста, используйте ответ Азама Алви. Предпочтение отдается .target. - person Armeen Harwood; 09.01.2015

Я столкнулся с проблемой, когда использовал ответ Джея: event.target в firefox указывает на родительский элемент цели event.toElement в chrome.
После просмотра объекта события я нахожу event.originalEvent.target, он хорошо работает как в firefox, так и в chrome.

person simomo    schedule 07.05.2015

На самом деле event.currentTarget должен работать в Chrome, Firefox и IE.

person gpasse    schedule 23.10.2013
comment
event.currentTarget возвращает мне элемент, которому принадлежит событие, а не элемент, с которым взаимодействует. Всплывающие события можно использовать, например, для определения события в родительском элементе, поэтому вам не нужно прикреплять аналогичные обработчики событий ко всем дочерним элементам. - person Lee Kowalkowski; 12.09.2014
comment
да почему в FF нет toElement :( - person Nikos; 18.07.2016

По состоянию на 2014 год IE11 не поддерживает toElement, я просмотрел объект события и обнаружил, что target имеет те же данные, что и toElement.

То есть, если вы щелкнете по дочернему элементу внутри элемента, для которого сработало это событие, дочерний элемент будет «целью» и будет сохранен в этом атрибуте.

Элемент, из которого запущено событие, хранится в атрибуте currentTarget.

Обратите внимание, я тестировал это только для т.е. 11, поэтому более старые версии могут не поддерживать это.

Таким образом, для поддержки firefox, т.е. и хрома (и, возможно, других) потребуется полифилл, что-то вроде:

var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }

Где e это event

person Jay    schedule 30.09.2014
comment
какая-либо польза от этого по сравнению с использованием e.target? - person Nikos; 18.07.2016

код легко следовать ..

enter code here
if(typeof evt.toElement !== "undefined")
{
        evt.toElement.classList.toggle('done');
}
else if(typeof evt.relatedTarget !== "undefined")
{
    if(evt.relatedTarget !== null)
    {
        evt.relatedTarget.classList.toggle('done');
    }
    else if(typeof evt.currentTarget !== "undefined")
    {
        evt.currentTarget.classList.toggle('done');
    }
    else
    {
    console.log("s_f_li_clickexception...");    
    } //endif
} //endif
person joseAndresGomezTovar    schedule 14.02.2014
comment
Я думаю, что более эффективно сделать evt.toElement = thesupportedFunction только один раз, а затем использовать evt.toElement - person Thomas Leduc; 29.09.2014