web-dev-qa-db-fra.com

erreur jquery 3.0 url.indexOf

Je reçois l'erreur suivante de jQuery une fois qu'il a été mis à jour en v3.0.0.

jquery.js:9612 Uncaught TypeError: url.indexOf is not a function

Une idée pourquoi?

187
Kamrul

Mettez à jour tout votre code qui appelle load fonctionne comme,

$(window).load(function() { ... });

À

$(window).on('load', function() { ... });

jquery.js: 9612 Uncaught TypeError: url.indexOf n'est pas une fonction

Ce message d'erreur provient de la fonction jQuery.fn.load.

J'ai rencontré le même problème dans ma candidature. Après quelques recherches, j'ai trouvé cette déclaration dans blog jQuery ,

.load, .unload et .error, déconseillés depuis jQuery 1.8, ne sont plus . Utilisez .on () pour enregistrer des auditeurs.

Je change simplement la façon dont mes objets jQuery appellent la fonction load comme ci-dessus. Et tout fonctionne comme prévu.

483
vadi taslim

Une meilleure approche peut être un polyfill comme celui-ci

jQuery.fn.load = function(callback){ $(window).on("load", callback) };

Avec cela, vous pouvez laisser le code hérité intact. Si vous utilisez webpack, veillez à utiliser le chargeur de scripts.

22
Korsmakolnikov

Jquery 3.0 contient des modifications de dernière minute qui suppriment certaines méthodes en raison de conflits. Votre erreur est probablement due à l'une de ces modifications, telle que la suppression de l'événement .load ().

En savoir plus dans le Guide de mise à niveau de jQuery Core 3.

Pour résoudre ce problème, vous devez soit réécrire le code pour le rendre compatible avec Jquery 3.0, soit utiliser le plug-in JQuery Migrate , qui restaure les API et comportements désapprouvés et/ou supprimés.

15
F3CP

Je suis tombé sur la même erreur après la mise à jour vers la dernière version de JQuery. Par conséquent, j’ai mis à jour le fichier jQuery sur lequel je travaillais, comme indiqué dans une réponse précédente, ainsi il était indiqué .on("load") au lieu de .load().

Ce correctif n'est pas très stable et parfois cela ne fonctionnait pas pour moi. Par conséquent, pour résoudre ce problème, vous devez mettre à jour votre code à partir de:

    .load();

à

    .trigger("load");

J'ai eu ce correctif de la source suivante: https://github.com/stevenwanderski/bxslider-4/pull/1024

2
James