jquery 3.0 url.indexOf error

210

Recibo el siguiente error de jQuery una vez que se ha actualizado v3.0.0.

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

¿Alguna idea de por qué?

Kamrul
fuente
compruebe esto, es posible que resuelva su problema Error de tipo no capturado: Indefinido no es una función en indexOf
Nalin Aggarwal
44
Es la nueva versión de jQuery que dispara el error. La versión anterior está bien.
Kamrul
Me encuentro con esto ahora también: 0
Feek
Por favor declara la respuesta. Creo que es obvio que tenemos uno
Mladen Janjetovic

Respuestas:

547

Actualice todo su código que llama a loadfunciones como,

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

A

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

jquery.js: 9612 Tipo de error no capturado: url.indexOf no es una función

Este mensaje de error proviene de la jQuery.fn.loadfunción.

Me he encontrado con el mismo problema en mi solicitud. Después de investigar un poco, encontré esta declaración en el blog jQuery ,

.load, .unload y .error, en desuso desde jQuery 1.8, ya no existen . Use .on () para registrar oyentes.

Simplemente cambio la forma en que mis objetos jQuery llaman a la loadfunción. Y todo funciona como se esperaba.

vadi taslim
fuente
40
Es una locura que no tengan una gran advertencia obsoleta en esta página en sus documentos, api.jquery.com/load .
James McMahon
3
Encontré que este era el problema exacto que tenía al iniciar la fundación de zurbs en aurelia
samuel.molinski
55
Es un poco irónico que el único lugar en el que todavía estaba haciendo esto era en el código de manejo de errores que luego se rompió: - /
Simon_Weaver
1
Gracias por esto, respuesta perfecta
KCarnaille
Lo usé en document.readyfunción y está funcionando a las mil maravillas.
Curiosidad el
29

Un mejor enfoque puede ser un polyfill como este

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

Con esto, puede dejar el código heredado intacto. Si usa webpack, asegúrese de usar script-loader.

Korsmakolnikov
fuente
Muchas gracias. Todavía recibí un error, James sugirió que usaras .trigger esto funcionó. jQuery.fn.load = function (callback) {$ (window) .trigger ("load", callback); };
rgfx
Increíble solución cuando es causada por un tercero JS. Otra ventaja es que no requiere una degradación, lo que causará vulnerabilidad (en cualquier versión de jquery por debajo de 3).
Mateusz el
Esta respuesta es el rey
Ntiyiso Rikhotso
16

Jquery 3.0 tiene algunos cambios importantes que eliminan ciertos métodos debido a conflictos. Su error probablemente se deba a uno de estos cambios, como la eliminación del evento .load ().

Lea más en la Guía de actualización de jQuery Core 3.0

Para solucionar esto, debe volver a escribir el código para que sea compatible con Jquery 3.0 o puede usar el complemento JQuery Migrate que restaura las API y los comportamientos obsoletos y / o eliminados.

F3CP
fuente
4

Me encontré con el mismo error después de actualizar a la última versión de JQuery. Por lo tanto, actualicé el archivo jquery en el que estaba trabajando, como se indicó en una respuesta anterior, por lo que decía en .on("load")lugar de .load().

Esta solución no es muy estable y, a veces, no funcionó para mí. Por lo tanto, para solucionar este problema, debe actualizar su código desde:

    .load();

a

    .trigger("load");

Obtuve esta solución de la siguiente fuente: https://github.com/stevenwanderski/bxslider-4/pull/1024

James
fuente