Errore jquery 3.0 url.indexOf


210

Ricevo il seguente errore da jQuery dopo che è stato aggiornato v3.0.0.

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

Qualche idea sul perché?


controlla questo, potrebbe essere che risolva il tuo problema Uncaught TypeError: Undefined non è una funzione su indexOf
Nalin Aggarwal

4
è la nuova versione di jQuery che genera l'errore. La vecchia versione va bene.
Kamrul,

Mi

Si prega di dichiarare la risposta. Penso che sia ovvio che ne abbiamo uno
Mladen Janjetovic il

Risposte:


546

Aggiorna tutto il codice che chiama loadfunziona come,

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

Per

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

jquery.js: 9612 TypeError non rilevato: url.indexOf non è una funzione

Questo messaggio di errore deriva dalla jQuery.fn.loadfunzione.

Ho riscontrato lo stesso problema sulla mia domanda. Dopo alcuni scavi, ho trovato questa affermazione nel blog di jQuery ,

.load, unload, e .error, deprecata dal jQuery 1.8, non sono più . Usa .on () per registrare i listener.

Semplicemente cambio il modo in cui i miei oggetti jQuery chiamano la loadfunzione come sopra. E tutto funziona come previsto.


40
È folle che non abbiano un grande avviso deprecato in questa pagina nei loro documenti, api.jquery.com/load .
James McMahon,

3
Ho scoperto che questo è il problema esatto che stavo avendo quando ho avviato il bootstrap della fondazione zurbs in aurelia
samuel.molinski

5
è un po 'ironico che l'unico posto in cui stavo ancora facendo questo fosse in errore nella gestione del codice che poi si è rotto da solo: - /
Simon_Weaver

1
Grazie per questa, risposta perfetta
KCarnaille,

L'ho usato in document.readyfunzione e funziona come un fascino.
Curiosità,

29

Un approccio migliore potrebbe essere un polyfill come questo

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

Con questo puoi lasciare intatto il codice legacy. Se usi il webpack assicurati di usare lo script-loader.


Grazie mille. Ho ancora un errore, James ti ha suggerito di usare .trigger che ha funzionato. jQuery.fn.load = function (callback) {$ (window) .trigger ("load", callback); };
rgfx,

Soluzione incredibile quando è causata da JS di terze parti. Un altro vantaggio è che non richiede un downgrade, che causerà vulnerabilità (in qualsiasi versione jquery inferiore a 3!).
Mateusz,

Questa risposta è re
Ntiyiso Rikhotso,

16

Jquery 3.0 ha alcune modifiche che rimuovono alcuni metodi a causa di conflitti. Il tuo errore è probabilmente dovuto a una di queste modifiche come la rimozione dell'evento .load ().

Maggiori informazioni nella Guida all'aggiornamento di jQuery Core 3.0

Per risolvere questo problema, è necessario riscrivere il codice per renderlo compatibile con Jquery 3.0 oppure utilizzare il plug-in JQuery Migrate che ripristina le API e i comportamenti deprecati e / o rimossi.


4

Mi sono imbattuto nello stesso errore dopo l'aggiornamento all'ultima versione di JQuery. Pertanto ho aggiornato il file jquery su cui stavo lavorando, come indicato in una risposta precedente, quindi ha detto .on("load")invece di .load().

Questa correzione non è molto stabile e talvolta non ha funzionato per me. Pertanto, per risolvere questo problema, è necessario aggiornare il codice da:

    .load();

per

    .trigger("load");

Ho ottenuto questa correzione dalla seguente fonte: https://github.com/stevenwanderski/bxslider-4/pull/1024

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.