L'accès de l'événement.cible dans IE8 Javascript non-intrusif

La fonction suivante devient la cible de l'élément dans un menu déroulant:

function getTarget(evt){

 var targetElement = null;

 //if it is a standard browser
 if (typeof evt.target != 'undefined'){
  targetElement = evt.target;
 }
 //otherwise it is IE then adapt syntax 
 else{
  targetElement = evt.srcElement;
 }

 //return id of <li> element when hovering over <li> or <a>
 if (targetElement.nodeName.toLowerCase() == 'li'){
  return targetElement;
 }
 else if (targetElement.parentNode.nodeName.toLowerCase() == 'li'){

    return targetElement.parentNode;
 }
 else{
  return targetElement;
 }

Inutile de dire, il fonctionne dans Firefox, Chrome, Safari et Opera mais il ne fonctionne pas avec IE8 (et je suppose que dans les précédentes versions).
Quand j'essaie de le déboguer avec IE8, j'ai l'erreur "Membre non Trouvé" sur la ligne:

targetElement = evt.srcElement;

le long de avec d'autres erreurs, mais je pense que c'est la clé de la ligne.
Toute aide sera appréciée.


Désolé, pour une raison quelconque, la mise en forme n'est pas correcte.

Voici de nouveau la fonction

 function getTarget(evt){

var targetElement = null;

//if it is a standard browser get target
if (typeof evt.target != 'undefined'){
    targetElement = evt.target;
}
//otherwise it is IE then adapt syntax and get target
else{
    targetElement = evt.srcElement;
}

//return id of <li> element when hovering over <li> or <a>
if (targetElement.nodeName.toLowerCase() == 'li'){
    return targetElement;
}
else if (targetElement.parentNode.nodeName.toLowerCase() == 'li'){

            return targetElement.parentNode;
}
else{
    return targetElement;
}

}//fin de la getTarget

  • Vous devez utiliser jQuery.
  • Ouais, ce serait le moyen le plus facile 😉
InformationsquelleAutor Mirko | 2010-04-15