web-dev-qa-db-fra.com

JQuery 2.1.1 dans IE9 obtient l'erreur: 0x800a01b6 - Erreur d'exécution Microsoft JScript: l'objet ne prend pas en charge la propriété ou la méthode 'addEventListener'

À l'aide de Visual Studio 2013, j'ai migré une application Web hybride Asp.Net Webforms/MVC 3 vers Asp.Net Webforms/MVC 5.1. Dans le cadre de la migration, j'ai mis à niveau Jquery de 1.9.1 à 2.1.1 à l'aide du gestionnaire de paquets NuGet.

Lorsque je lance l'application dans le débogueur Visual Studio 2013 sous Chrome, je n'ai aucun problème.

Lorsque j'exécute l'application dans le débogueur Visual Studio 2013 dans IE 9 (le mode de compatibilité n'est pas activé), une page maître contenant ces deux balises de script est chargée en premier:

<script src="/Scripts/jquery-2.1.1.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>

Il échoue avec cette erreur Javascript:

Unhandled exception at line 3425, column 4 in http://localhost:25378/Scripts/jquery-2.1.1.js 
0x800a01b6 - Microsoft JScript runtime error: Object doesn't support property or method 'addEventListener'

Je me rends compte que Jquery 2 ne fonctionne pas avec IE 8 et versions antérieures, mais je ne trouve aucune documentation signalant des problèmes avec IE 9.

L'erreur se produit à la ligne 3425 de jquery-2.1.1.js dans la fonction jQuery.ready.promise:

document.addEventListener( "DOMContentLoaded", completed, false );

Étrangement, lorsque je m'arrête à l'erreur, examine l'objet document dans le débogueur et développe le nœud "Méthodes". Je peux voir la méthode "addEventListener". C'est comme si Jquery n'avait pas le droit de voir la méthode.

J'aimerais beaucoup passer à Jquery 2, et à partir de tout ce que j'ai lu, Jquery 2 devrait fonctionner avec IE9. Un conseil sur la résolution de ce problème?

7
Tom Regan

Merci ᾠῗᵲ ᄐ ᶌ et QBM5 pour vos commentaires, la réponse dans ce cas était de supprimer

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

de l'en-tête de la page maître, car il a placé le navigateur en mode de compatibilité IE 8 et que IE 8 n'est pas compatible avec JQuery 2.

9
Tom Regan

La même erreur se produisait avec une toute nouvelle application Web dans VS2013 Ultimate. IE11 fonctionnait en mode de compatibilité - désactiver cette option pour éliminer l'erreur

8
PTansey

J'obtenais une exception similaire lors de l'utilisation de JQuery dans IE8. et solution trouvée

<head id="Head1" runat="server"> 
    <!--[if lt IE 9]>
        <script src="/js/trirand/jquery-1.11.1.min.js" type="text/javascript"></script> 
    <![endif]-->

    <!--[if gt IE 8]>
        <script src="/js/trirand/jquery-2.1.1.min.js" type="text/javascript"></script> 
        <![endif]-->
</head>

vous pouvez changer de version si besoin.

Depuis le code: IE8 et les versions inférieures prennent en charge les versions de jQuery1X

Les versions de Jquery2x fonctionnent dans IE9 et les versions ultérieures.

Bonne chance

1

Vous pouvez ajouter le code ci-dessous dans votre fichier de configuration Web pour définir le mode document:

<system.webServer>
  <httpProtocol>
    <customHeaders>
     <add name="X-UA-Compatible" value="IE=EmulateIE9" />
    </customHeaders>
 </httpProtocol>
</system.webServer>
1
anshul