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é?


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.


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.


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.