Fehler "Nicht erfasster TypeError: a.indexOf ist keine Funktion" beim Öffnen eines neuen Foundation-Projekts

250

Ich habe ein neues Foundation 5-Projekt durch bash mit erstellt foundation new my-project. Wenn ich die Datei index.html in Chrome öffne, Uncaught TypeError: a.indexOf is not a functionwird in der Konsole ein Fehler angezeigt, der von stammt jquery.min.js:4.

Ich habe das Projekt gemäß den Schritten auf der Foundation-Site erstellt, aber ich kann diesen Fehler anscheinend nicht beseitigen. Foundation und jQuery scheinen in der Datei index.html enthalten und korrekt verknüpft zu sein, und die verknüpfte Datei app.js enthält$(document).foundation();

Weiß jemand, was diesen Fehler verursacht? und was könnte eine Lösung sein?

Screenshot der Konsolenfehlermeldung

FreddieE
quelle

Antworten:

819

Dieser Fehler kann durch die jQuery-Ereignis-Aliase wie verursacht .load()werden .unload()oder .error()dass alle seit jQuery 1.8 veraltet sind . Suchen Sie in Ihrem Code nach diesen Aliasen und ersetzen Sie sie stattdessen durch die Methode. Ersetzen Sie beispielsweise den folgenden veralteten Auszug:.on()

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

mit den folgenden:

$(window).on('load', function(){ ...});
Daniel Llano
quelle
3
Ich hatte es nicht mit 2.2.1 @User, aber sobald ich zu 3.3.1 wechselte, musste ich diese Änderung vornehmen.
Codemonkey
@ DanielLlano Sie retten meinen Tag
Owaiz Yusufi
1
Das hat es für mich behoben.
Radagast the Brown
@Crine $(function() {});ist für Dokumente bereit, was nicht mit dem Fensterladeereignis identisch ist. Außerdem wird doc ready häufig vor dem Laden des Fensters ausgelöst.
Robert
Hallo Mann, kannst du mir sagen warum? bevor es mit Version 1.12.3 funktionierte und es nicht mehr funktionierte, als ich auf 17.4.1 migrierte
Armando Marques Sobrinho
35

Dieser Fehler wird häufig durch inkompatible jQuery-Versionen verursacht. Ich habe den gleichen Fehler mit einem foundation 6Repository festgestellt. Mein Repository wurde verwendet jQuery 3, aber für Foundation ist eine frühere Version erforderlich. Ich habe es dann geändert und es hat funktioniert.

Wenn Sie sich die Version von jQuery ansehen, die für die darin enthaltenen Foundation 5-Abhängigkeiten erforderlich ist "jquery": "~2.1.0".

Können Sie bestätigen, dass Sie die richtige Version von jQuery laden?

Ich hoffe das hilft.

shaune
quelle
29

Bitte fügen Sie unten das jQuery Migrate Plugin hinzu

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>
Govarthanan Venunathan
quelle
Ich bestätige, dass dies das Problem behoben hat.
Morad Hamdy
17

Ich habe mich auch diesem Problem gestellt. Ich habe jquery.poptrox.min.jszum Poppen und Zoomen von Bildern verwendet und eine Fehlermeldung erhalten, die besagt:

Fehler "Nicht erfasster Typfehler: a.indexOf ist keine Funktion" .

Dies liegt daran, dass dies indexOfnicht unterstützt wurde. 3.3.1/jquery.min.jsEine einfache Lösung besteht darin, es auf eine alte Version zu ändern 2.1.0/jquery.min.js.

Das hat es für mich behoben.

Harshit Pant
quelle
2
Ich bin zu 3.2.1 zu 2.1.0 gewechselt und es hat funktioniert. Das hat bei mir funktioniert.
Siddharth
Herzlich willkommen ! @ Siddharth
Harshit Pant
1
Gehen Sie niemals auf Versionen zurück, da dies zu erheblichen Sicherheitsproblemen führen kann.
Ajay Takur
1
Wenn dies der Fall ist: Sie können den folgenden Code $ (window) .load (function () {...}) ersetzen. mit folgendem: $ (Fenster) .on ('load', function () {...}); das würde auch funktionieren! :)
Harshit Pant
13

Einer der möglichen Gründe ist, wenn Sie jQuery ZWEIMAL laden , wie zum Beispiel:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

Überprüfen Sie also Ihren Quellcode und entfernen Sie doppelte jQuery-Ladevorgänge.

T.Todua
quelle
2
Es passiert mit WordPress, das eine eigene Version lädt, wenn Sie auch eine jquery-Version auf Ihrer Seite laden.
Olou
1

Ich verwende jQuery 3.3.1und habe den gleichen Fehler erhalten. In meinem Fall war die URL eine Objectvs-Zeichenfolge.

Was passiert ist, dass ich genommen habe URL = window.location- was ein Objekt zurückgegeben hat. Sobald ich es geändert habe, hat es ohne window.location.hrefden e.indexOfFehler funktioniert .

Ricky Levi
quelle
0

Ich habe dieses Problem gelöst, indem ich die richtige Version Jquerymeines Projekts installiert habenpm

Ntiyiso Rikhotso
quelle