erreur jquery 3.0 url.indexOf

210

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

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

Une idée pourquoi?

Kamrul
la source
vérifiez ceci, peut-être qu'il résout votre problème Uncaught TypeError: Undefined n'est pas une fonction sur indexOf
Nalin Aggarwal
4
c'est la nouvelle version de jQuery qui déclenche l'erreur. L'ancienne version est très bien.
Kamrul
Je rencontre aussi ça maintenant: 0
Feek
Veuillez déclarer la réponse. Je pense qu'il est évident que nous en avons un
Mladen Janjetovic

Réponses:

547

Mettez à jour tout votre code qui appelle des loadfonctions comme,

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

À

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

jquery.js: 9612 TypeError non intercepté: url.indexOf n'est pas une fonction

Ce message d'erreur provient de la jQuery.fn.loadfonction.

J'ai rencontré le même problème sur ma demande. Après avoir creusé, j'ai trouvé cette déclaration dans le blog jQuery ,

.load, .unload et .error, obsolètes depuis jQuery 1.8, ne sont plus . Utilisez .on () pour enregistrer les écouteurs.

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

vadi taslim
la source
40
C'est fou, ils n'ont pas un gros avertissement obsolète sur cette page dans leurs documents, api.jquery.com/load .
James McMahon
3
J'ai trouvé que c'était le problème exact que je rencontrais lors du démarrage de la fondation zurbs dans aurelia
samuel.molinski
5
sorte d'ironie que le seul endroit où je faisais toujours cela était dans le code de gestion des erreurs qui s'est ensuite cassé: - /
Simon_Weaver
1
Merci pour cela, réponse parfaite
KCarnaille
Je l'ai utilisé en document.readyfonction et ça marche comme un charme.
Curiosité
29

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, assurez-vous d'utiliser le chargeur de scripts.

Korsmakolnikov
la source
Merci beaucoup. J'ai toujours une erreur, James a suggéré que vous utilisiez le .trigger, cela a fonctionné. jQuery.fn.load = fonction (rappel) {$ (fenêtre) .trigger ("charger", rappel); };
rgfx le
Solution incroyable lorsqu'elle est causée par un JS tiers. Un autre avantage est qu'il ne nécessite pas de rétrogradation, ce qui entraînera une vulnérabilité (dans toute version jquery inférieure à 3!).
Mateusz
Cette réponse est
reine
16

Jquery 3.0 a quelques changements de rupture qui suppriment certaines méthodes en raison de conflits. Votre erreur est probablement due à l'une de ces modifications telles que la suppression de l'événement .load ().

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

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

F3CP
la source
4

J'ai rencontré 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, donc il a dit à la .on("load")place de .load().

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

    .load();

à

    .trigger("load");

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

James
la source