2013-05-03 2 views
-3

Je suis novice dans le codage et dans ma première année d'études universitaires en Technologies Web. Pour mon travail sur le Web, j'ai dû créer une application Web qui permettrait à l'utilisateur de définir différentes préférences pour les carrières et d'afficher les carrières correspondant aux préférences.Erreur avec Javascript dans Internet Explorer

Quoi qu'il en soit, j'ai réussi à le faire mais j'ai un problème avec Internet Explorer, mon site fonctionne très bien dans Safari, Chrome et Firefox. Cependant, dans IE lorsque vous appuyez sur mon bouton de recherche, JavaScript ne semble pas fonctionner. Je déboguée mon site dans IE et il est venu avec une erreur pour cette section de code:

var resetBtn = document.getElementById("resetBtn"); 
resetBtn.addEventListener("click", reset, false); 

L'erreur se produit sur la deuxième ligne et le message est:

Object doesn't support property or method 

Que dois-je avoir à faire pour corriger l'erreur?

Screenshot of error

Link to screenshot

Merci Vous

+0

Utilisez-vous IE8 ou plus tôt? Si oui, le problème auquel vous êtes probablement confronté est répondu ici: http://stackoverflow.com/questions/6927637/addeventlistener-in-internet-explorer – talemyn

+0

Quel "lien ci-dessous"? –

+1

@Bojangles si vous faites un clic droit sur l'image et cliquez sur Ouvrir l'image dans le nouvel onglet, l'image est très claire. Je suis d'accord, même s'il aurait dû se concentrer uniquement sur l'erreur. – aug

Répondre

2

Ouais, comme dit avant, IE ne connaît pas la méthode addEventListener, donc, vous devez faire ceci:

var resetBtn = document.getElementById("resetBtn"); 
if(resetBtn.addEventListener){ 
    resetBtn.addEventListener("click", reset, false); 
}else{ 
    resetBtn.attachEvent("onclick", reset); 
} 

De cette façon, vous faites la bonne façon qui est de vérifier les capacités de le navigateur. Dans ce cas en particulier, nous testons si le navigateur supporte addEventListener (méthode standard) sinon, fallback à la méthode IE qui est attachEvent et le nom de l'évènement doit être précédé d'un mot "on". Encore une fois, comme mentionné ci-dessus, vous pouvez inclure une bibliothèque comme jquery, prototype, mootools, etc. Mais je suggère fortement de le garder dans JS pur à des fins d'apprentissage, oui, les bibliothèques vous aident à coder plus rapidement, mais vous sautez beaucoup d'apprentissage et d'ailleurs, JS pure est plus rapide que n'importe quelle bibliothèque n'importe quel jour, n'importe quand.

Espérons que cela aide.

6

Dans Internet Explorer, vous devez utiliser attachEvent

Question connexe: MSIE and addEventListener Problem in Javascript?

+0

Ou utiliser jQuery (ou une autre bibliothèque d'abstraction) de sorte que vous n'avez pas à vous soucier de la compatibilité multi-navigateur comme il est – Stoop

+0

2001. Pour cette mission @ Joe web nous n'a pas été autorisé à utiliser jQuery que nous étudions cette année prochaine, alors Je me demandais juste quelle solution vous proposeriez. Au plaisir d'apprendre jQuery pour résoudre tous ces problèmes de compatibilité de navigateur. – kwright2713

+0

Ensuite, vous devrez écrire du code compatible avec plusieurs navigateurs, qui est expliqué dans le lien Question connexe de @ aug. Je ne vois pas votre HTML dans votre capture d'écran, mais si "resetBtn" est un élément d'ancrage ou d'entrée, alors comme alternative au javascript brut, vous pouvez simplement utiliser l'attribut onclick de l'élément. Stoop

0

Il semble que votre IE est en mode de compatibilité, de se comporter comme les anciennes versions qui ne supportent pas addEventListener. Si vous ne vous souciez pas d'IE 8 et des versions antérieures, vous pouvez forcer le navigateur à sortir du mode de compatibilité en émettant un en-tête X-UA-Compatible sur votre serveur. Vous pouvez également définir la balise meta suivante sur le <head> de votre fichier HTML (bien que l'émission d'un en-tête HTTP correct du serveur est également fortement recommandé):

<meta http-equiv="X-UA-Compatible" content="IE=Edge" > 

Si vous avez besoin pour soutenir vieux IE, regarder dans attachEvent comme suggéré dans la réponse d'août.

+3

Ce n'est pas le mode de compatibilité; c'est en fait IE8. – SLaks

Questions connexes