2009-12-16 6 views
1

J'ai écrit ce code dans les balises HEAD de ma page HTML. Cela fonctionne très bien dans FF, Chrome et Safaria, mais pas dans IE7. Je voudrais savoir comment le réparer.keydown EventListener ne fonctionne pas dans IE7 (Javascript)

<script type="text/javascript"> 
if (window.addEventListener) { 
    window.addEventListener("keydown", function(e) { 
    alert(e.keyCode); 
    }, true); 
} 
</script> 

Merci d'avance.

Répondre

2

Il n'y a pas de window.addEventListener dans IE, vous devez utiliser attachEvent. Il existe une bonne documentation sur les événements here, ou vous pouvez passer à l'utilisation d'une bibliothèque qui résume les différences de navigateur.

1

Essayez:

window.attachEvent 

Plus entièrement:

//set page event handlers 
if (window.attachEvent) { 
//IE and Opera 
window.attachEvent("keydown", ""); 
} else if (window.addEventListener) { 
// IE 6 
window.addEventListener("keydown", ""); 
} else { 
//FireFox 
document.addEventListener("keydown", ""); 
} 
+0

Je pense que vous avez oublié le "on" -prefix pour attachEvent, donc "onkeydown" plutôt que "keydown" – Mansiemans

2

Vous êtes foutus: vous utilisez event capturing (en passant true comme le dernier paramètre à addEventListener). IE a aucun tel équivalent, en toute version, y compris IE8 en mode IE8.

Y a-t-il une raison pour laquelle vous devez utiliser la capture d'événement plutôt que cet événement qui bouillonne ici? IOW, passez false comme dernier paramètre? Ensuite, vous serez en mesure de porter ce (un peu) à utiliser la méthode propriétaire d'IE attachEvent, ou d'utiliser une bibliothèque (comme d'autres l'ont suggéré et ajouté des liens).

Questions connexes