J'utilise jquery 2.0, mais j'aimerais également utiliser le plugin jQuery migrate afin que mon site Web fonctionne avec les navigateurs plus anciens. Cependant, je n'ai pas réussi à le faire fonctionner. J'ai le texte suivant dans la section d'en-tête de mon code HTML.
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
La balise méta de compatibilité est pour que je puisse tester ceci sur mon ordinateur (qui a IE 11). Je n'ai pas d'ordinateur avec un ancien IE. Quoi qu'il en soit, cela me donne des erreurs javascript telles que:
0x800a01b6 - Erreur d'exécution JavaScript: l'objet ne prend pas en charge la propriété ou la méthode 'addEventListener'
Le guide de migration de jQuery ( https://github.com/jquery/jquery-migrate/ ) semble simplement indiquer d'inclure le plug-in migrate après avoir inclus jQuery. Qu'est-ce que je fais mal?
EDIT
J'ai trouvé que mon fichier local jquery.js doit être corrompu ou peut-être que le paquet de nuget d'où je viens a une mauvaise version. Depuis cette erreur disparaît lorsque j'inclus jquery directement à partir de code.jquery.com.
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
Cependant, mes scripts donnent une erreur. Voici un exemple de script
function HighlightSelectedRow(tr) {
$("#TableSummary tr").removeClass("HighlightedRow");
tr.className += " HighlightedRow";
}
Il donne l'erreur suivante
0x800a138f - JavaScript runtime error: The value of the property '$' is null or undefined, not a Function object
Merci
Peut-être devriez-vous réorganiser la pile js:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
</head>
Changer l'ordre du script include jquery migrate
Il est peu probable que ce soit une corruption de fichier, juste une incompatibilité avec jQuery 2.x et IE 8. Si vous avez besoin de la compatibilité IE 8, utilisez la commande Série 1.x.
Ceci s’applique même si vous utilisez IE 10 (et je suppose plus récent). Dans mon cas, j'avais quelques PC avec Outils/Paramètres de vue de compatibilité/Afficher les sites Intranet dans vue de compatibilité cochée . Donc, cela a bien fonctionné dans Visual Studio sur mon PC local, mais lorsque j'ai "publié" sur un serveur interne pour la couche de test suivante, SPLAT. Certains ordinateurs se sont écrasés et brûlés, alors que d'autres allaient bien.
Le site de téléchargement jQuery donne cet avertissement.
jQuery 2.x a la même API que jQuery 1.x, mais ne prend pas en charge Internet Explorer 6, 7 ou 8. ... Étant donné que IE 6/7/8 sont encore relativement courants, nous vous recommandons en utilisant la version 1.x sauf si vous êtes certain qu'aucun IE 6/7/8 utilisateurs ne se rend sur le site.
Pour ceux qui veulent forcer IE à quitter le mode de compatibilité,
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
peut être ajouté tout en haut de votre page maître.
Modifier
Ce code appellera la version correcte de jQuery pour les anciens IE. Il chargera 1.x pour IE 8 et 10 en mode de compatibilité. Ceci peut être ajouté en combinaison ou en remplacement de la valeur Meta ci-dessus.
<!--[if lt IE 9]>
<script src="http://code.jquery.com/jquery-1.11.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<!--<![endif]-->
Désactiver le mode de compatibilité sur IE a fonctionné pour moi.