2016-06-10 9 views
142

Viene visualizzato l'errore seguente da jQuery una volta aggiornato a v3.0.0.jquery 3.0 url.indexDi errore

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

qualche idea del perché?

+0

controllare questo, può essere che risolve il problema [Uncaught TypeError: Undefined non è una funzione su indexOf] (http: // stackoverflow.it/questions/24471229/uncaught-typeerror-undefined-is-not-a-function-on-indexof) –

+3

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

+0

im in questo momento anche in questo: 0 – Feek

risposta

357

Aggiornamento tutto il codice che chiama load funzione come,

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

Per

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

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

Questo messaggio di errore viene daFunzione.

Ho riscontrato lo stesso problema nella mia applicazione. Dopo un po 'di scavo, ho trovato questa dichiarazione in jQuery blog,

.load, .unload, and .error, deprecated since jQuery 1.8, are no more. Use .on() to register listeners.

ho semplicemente cambiare come i miei oggetti jQuery chiamano la funzione load come sopra. E tutto funziona come previsto.

+24

È pazzesco che non abbiano un grosso avviso deprecato su questa pagina nei loro documenti, http://api.jquery.com/load/. –

+1

Ho trovato questo il problema esatto che stavo avendo durante il bootstrap di zurbs foundation in aurelia –

+2

un po 'ironico che l'unico posto in cui stavo ancora facendo questo era il codice di gestione degli errori che poi si ruppe: -/ –

12

Jquery 3.0 presenta alcune modifiche irrisolte che rimuovono determinati metodi a causa di conflitti. Molto probabilmente il tuo errore è dovuto a una di queste modifiche, come la rimozione dell'evento .load().

Maggiori informazioni nella jQuery Core 3.0 Upgrade Guide

Per risolvere questo problema si sia bisogno di riscrivere il codice per essere compatibile con jQuery 3.0 oppure è possibile utilizzare la JQuery Migrate plugin che ripristina le API deprecate e comportamenti e/o rimossi.

2

Ho trovato lo stesso errore dopo l'aggiornamento all'ultima versione di JQuery. Di conseguenza, ho aggiornato il file jquery su cui stavo lavorando, come indicato in una risposta precedente, quindi ha detto .on("load") anziché .load().

Questa correzione non è molto stabile e talvolta non ha funzionato per me. Quindi per risolvere questo problema si dovrebbe aggiornamento il codice da:

.load(); 

a

.trigger("load"); 

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

12

Meglio approccio può essere un polyfill come questo

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

Con questo è possibile lasciare intatto il codice precedente. Se usi webpack assicurati di usare script-loader.

+0

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

+1

Grazie! Funziona per me. –