Błąd jquery 3.0 url.indexOf

210

Otrzymuję następujący błąd z jQuery po aktualizacji do v3.0.0.

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

Masz pomysł, dlaczego?

Kamrul
źródło
zaznacz to, może to rozwiąże Twój problem Nieprzyjęty Typ Błąd: Niezdefiniowana nie jest funkcją w indexOf
Nalin Aggarwal
4
to nowa wersja jQuery uruchamiająca błąd. Stara wersja jest w porządku.
Kamrul
napotykam też na to teraz: 0
Feek
Proszę zadeklarować odpowiedź. Myślę, że to oczywiste, że mamy taką
Mladen Janjetovic

Odpowiedzi:

546

Zaktualizuj cały kod, który wywołuje loadtakie funkcje,

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

Do

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

jquery.js: 9612 Uncaught TypeError: url.indexOf nie jest funkcją

Ten komunikat o błędzie pochodzi z jQuery.fn.loadfunkcji.

W mojej aplikacji napotkałem ten sam problem. Po kilku kopaniach znalazłem to oświadczenie na blogu jQuery ,

.load, .unload i .error, przestarzałe od jQuery 1.8, już nie są . Użyj .on (), aby zarejestrować słuchaczy.

Po prostu zmieniam sposób, w jaki moje obiekty jQuery wywołują loadfunkcję jak wyżej. I wszystko działa zgodnie z oczekiwaniami.

Vadi Taslim
źródło
40
To szalone, że nie mają dużego przestarzałego ostrzeżenia na tej stronie w swoich dokumentach, api.jquery.com/load .
James McMahon,
3
Przekonałem się, że jest to dokładny problem, jaki miałem, gdy ładowałem Zurbs Foundation do
aurelii
5
trochę ironiczne, że jedynym miejscem, w którym wciąż to robiłem, był kod obsługi błędów, który potem sam się zepsuł: - /
Simon_Weaver 12.12.16
1
Dzięki za to, idealna odpowiedź
KCarnaille
Użyłem go w document.readyfunkcji i działa jak urok.
Ciekawość,
29

Lepszym podejściem może być takie wypełnienie

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

Dzięki temu możesz pozostawić dotychczasowy kod nietknięty. Jeśli używasz webpacka, pamiętaj o użyciu programu ładującego skrypty.

Korsmakolnikov
źródło
Dzięki wielkie. Nadal mam błąd, James zasugerował, aby użyć .trigger działało. jQuery.fn.load = function (callback) {$ (window) .trigger ("load", callback); };
rgfx
Niesamowite rozwiązanie, gdy jest spowodowane przez JS innej firmy. Kolejnym plusem jest to, że nie wymaga obniżenia wersji, co spowoduje podatność (w każdej wersji jquery poniżej 3!).
Mateusz
Ta odpowiedź jest królem
Ntiyiso Rikhotso
16

Jquery 3.0 ma kilka przełomowych zmian, które usuwają niektóre metody z powodu konfliktów. Twój błąd jest najprawdopodobniej spowodowany jedną z tych zmian, takich jak usunięcie zdarzenia .load ().

Przeczytaj więcej w Przewodniku aktualizacji jQuery Core 3.0

Aby to naprawić, musisz przepisać kod, aby był zgodny z Jquery 3.0, albo możesz użyć wtyczki JQuery Migrate, która przywraca przestarzałe i / lub usunięte interfejsy API i zachowania.

F3CP
źródło
4

Ten sam błąd napotkałem po aktualizacji do najnowszej wersji JQuery. Dlatego zaktualizowałem plik jquery, nad którym pracowałem, jak stwierdzono w poprzedniej odpowiedzi, więc powiedział on .on("load")zamiast .load().

Ta poprawka nie jest zbyt stabilna i czasami nie działała dla mnie. Dlatego, aby rozwiązać ten problem, należy zaktualizować kod z:

    .load();

do

    .trigger("load");

Mam tę poprawkę z następującego źródła: https://github.com/stevenwanderski/bxslider-4/pull/1024

James
źródło