jquery 3.0 url.indexOf Fehler


210

Ich erhalte folgenden Fehler von jQuery, sobald es auf aktualisiert wurde v3.0.0.

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

Irgendeine Idee warum?


Überprüfen Sie dies, möglicherweise löst es Ihr Problem. Ungefangener Typfehler: Undefiniert ist keine Funktion in indexOf
Nalin Aggarwal

4
Es ist die neue Version von jQuery, die den Fehler auslöst. Alte Version ist in Ordnung.
Kamrul

Feek

Bitte erklären Sie die Antwort. Ich denke, es ist offensichtlich, dass wir eine haben
Mladen Janjetovic

Antworten:


546

Aktualisieren Sie Ihren gesamten Code, der loadwie folgt funktioniert:

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

Zu

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

jquery.js: 9612 Nicht erfasster TypeError: url.indexOf ist keine Funktion

Diese Fehlermeldung kommt von der jQuery.fn.loadFunktion.

Ich habe in meiner Bewerbung das gleiche Problem festgestellt. Nach einigem Graben fand ich diese Aussage im jQuery-Blog ,

.load, .unload und .error, die seit jQuery 1.8 veraltet sind , sind nicht mehr vorhanden . Verwenden Sie .on (), um Listener zu registrieren.

Ich ändere einfach, wie meine jQuery-Objekte die loadFunktion wie oben aufrufen . Und alles funktioniert wie erwartet.


40
Es ist verrückt, dass sie auf dieser Seite in ihren Dokumenten api.jquery.com/load keine große veraltete Warnung haben .
James McMahon

3
Ich fand, dass dies genau das Problem war, das ich hatte, als ich zurbs Foundation in
Aurelia

5
irgendwie ironisch, dass der einzige Ort, an dem ich dies tatsächlich noch tat, der Fehlerbehandlungscode war, der sich dann selbst brach: - /
Simon_Weaver

1
Vielen Dank für diese perfekte Antwort
KCarnaille

Ich habe es in der document.readyFunktion verwendet und es funktioniert wie ein Zauber.
Neugier

29

Ein besserer Ansatz kann eine solche Polyfüllung sein

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

Damit können Sie den Legacy-Code unberührt lassen. Wenn Sie Webpack verwenden, müssen Sie den Script-Loader verwenden.


Vielen Dank. Ich habe immer noch einen Fehler, James schlug vor, dass Sie .trigger verwenden, das hat funktioniert. jQuery.fn.load = Funktion (Rückruf) {$ (Fenster) .trigger ("Laden", Rückruf); };
rgfx

Erstaunliche Lösung, wenn sie von JS von Drittanbietern verursacht wird. Ein weiteres Plus ist, dass kein Downgrade erforderlich ist, was zu Sicherheitslücken führt (in jeder jquery-Version unter 3!).
Mateusz

Diese Antwort ist König
Ntiyiso Rikhotso

16

Jquery 3.0 enthält einige wichtige Änderungen, mit denen bestimmte Methoden aufgrund von Konflikten entfernt werden. Ihr Fehler ist höchstwahrscheinlich auf eine dieser Änderungen zurückzuführen, z. B. auf das Entfernen des Ereignisses .load ().

Weitere Informationen finden Sie im jQuery Core 3.0-Upgrade-Handbuch

Um dies zu beheben, müssen Sie entweder den Code neu schreiben, um mit Jquery 3.0 kompatibel zu sein, oder Sie können das JQuery Migrate-Plugin verwenden, das die veralteten und / oder entfernten APIs und Verhaltensweisen wiederherstellt.


4

Nach dem Update auf die neueste Version von JQuery ist derselbe Fehler aufgetreten. Daher aktualisiere ich die Jquery - Datei ich arbeite, wie in einer früheren Antwort angegeben, so sagte sie .on("load")statt .load().

Dieses Update ist nicht sehr stabil und manchmal hat es bei mir nicht funktioniert. Um dieses Problem zu beheben, sollten Sie Ihren Code daher aktualisieren von:

    .load();

zu

    .trigger("load");

Ich habe dieses Update von der folgenden Quelle erhalten: https://github.com/stevenwanderski/bxslider-4/pull/1024

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.