55 votes

event.toElement dans IE8 et Firefox ?

J'ai remarqué que dans Chrome et IE9, pour les onmouseout il y a un event.toElement (afin de déterminer l'élément sur lequel la souris pointe).

Je ne trouve pas de bien comparable dans Firefox.

Malheureusement, je ne peux pas utiliser jQuery pour gérer ces événements, je dois utiliser des js natifs.

Tout conseil serait apprécié.

1 votes

À titre d'information, en jQuery, ce serait api.jquery.com/event.relatedTarget comme dans Firefox.

2 votes

Je n'en suis pas si sûr @BarnabasSzabolcs. Ici, en 2018, e.relatedTarget et $(e).relatedTarget sont respectivement null et undefined.

51voto

Azam Alvi Points 1148

Au lieu de event.toElement, vous devriez utiliser ceci :

event.target

1 votes

This answer is the one that worked for me. currentTarget and relatedTarget can give you different results. e.g. in a click event for an <a> when <ul><li><a></a></i></ul> e.target gives me <a> (just as e.toElement), but currentTarget and relatedTarget gives me the entire <ul>.

1 votes

C'est exactement ce dont j'avais besoin. Je suis novice en javascript donc je ne sais pas pourquoi j'utilisais "toElement", probablement un exemple de code que j'ai vu quelque part. La cible est clairement ce que je voulais en premier lieu.

1 votes

C'est la meilleure réponse.

26voto

captainclam Points 2942

0 votes

Depuis que vous avez réalisé que IE a event.toElement Pour éviter toute confusion, veuillez retirer sa référence de la question et de la réponse... cela n'invalidera pas les autres réponses existantes.

4 votes

FYI - IE11 ne semble pas avoir la fonction event.toElement

2 votes

Veuillez utiliser la réponse d'Azam Alvi .target est préférable.

11voto

simomo Points 664

J'ai rencontré un problème lorsque j'ai utilisé la réponse de Jay, event.target sur firefox pointe vers l'élément parent de event.toElement sur le chrome.
Après avoir examiné l'obj de l'événement, je trouve event.originalEvent.target Il fonctionne bien sur firefox et chrome.

8voto

gpasse Points 1198

En fait event.currentTarget devrait fonctionner dans Chrome, Firefox et IE

2 votes

Event.currentTarget me renvoie l'élément auquel appartient l'événement, et non l'élément avec lequel on interagit. Vous pouvez utiliser le bouillonnement d'événements, par exemple, pour définir un événement sur un élément parent afin de ne pas avoir à attacher des gestionnaires d'événements similaires à tous les éléments enfants.

0 votes

Pourquoi diable FF n'a-t-il pas de toElement :(

7voto

Jay Points 86

Depuis 2014, IE11 ne prend pas en charge la fonction toElement J'ai examiné l'objet de l'événement et j'ai trouvé target pour avoir les mêmes données que toElement.

En d'autres termes, si vous cliquez sur un élément enfant à l'intérieur d'un élément sur lequel cet événement s'est déclenché, l'élément enfant sera la "cible" et sera stocké dans cet attribut.

L'élément à partir duquel l'événement a été déclenché est stocké dans le fichier currentTarget attribut.

Attention, je n'ai testé que pour ie 11, il se peut que les versions plus anciennes ne le supportent pas.

Donc pour supporter firefox ie et chrome (et éventuellement d'autres), un polyfill serait nécessaire, quelque chose comme :

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

e est le event

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X