web-dev-qa-db-fra.com

event.toElement dans IE8 et Firefox?

J'ai remarqué que dans Chrome et IE9, pour les événements onmouseout, il y a une propriété event.toElement (afin que vous puissiez déterminer quel élément la souris pointe maintenant)).

Je ne trouve pas de propriété comparable dans Firefox.

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

Tout avis sera le bienvenu.

46
captainclam

Utilisez-le pour résoudre mon problème

event.target
37
Azam Alvi
21
captainclam

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

10
simomo

Réellement event.currentTarget devrait fonctionner dans Chrome, Firefox et IE

8
gpasse

Depuis 2014, IE11 ne prend pas en charge toElement, j'ai parcouru l'objet événement et j'ai trouvé que target avait les mêmes données que toElement.

Autrement dit, 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 stocké dans cet attribut.

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

Remarque, je n'ai testé cela que pour 11, donc les anciennes versions peuvent ne pas le supporter.

Donc, pour supporter Firefox ie et chrome (et peut-être 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

6
Jay

code facile à suivre ..

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
0
joseAndresGomezTovar