web-dev-qa-db-fra.com

Comment utiliser le plugin jQuery Migrate

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

5
Skye MacMaster

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>
6
Jai

Changer l'ordre du script include jquery migrate

3
Nikhil

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]-->
1
Greg Little

Désactiver le mode de compatibilité sur IE a fonctionné pour moi.

0
Dhruv Rangunwala