Помилка "Uncaught TypeError: a.indexOf не є функцією" під час відкриття нового фундаментального проекту


250

Я створив новий проект Foundation 5 через bash, с foundation new my-project . Коли я відкриваю файл index.html в Chrome, Uncaught TypeError: a.indexOf is not a functionна консолі відображається помилка, що походить від jquery.min.js:4.

Я створив проект, виконуючи кроки на сайті фундаменту, але я не можу позбутися цієї помилки. Фонд та jQuery виглядають так, як вони включені та зв’язані правильно у файлі index.html, а пов'язаний файл app.js включає$(document).foundation();

Хтось знає, що викликає цю помилку? і яке може бути рішення?

Скріншот повідомлення про помилку консолі

Відповіді:


820

Ця помилка може бути викликана псевдонімами події jQuery типу .load(), .unload()або ж, .error()що всі застарілі з часу jQuery 1.8 . Знайдіть ці псевдоніми у своєму коді та замініть їх .on()методом. Наприклад, замініть такий застарілий уривок:

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

із наступним:

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

3
У мене не було 2.2.1 @User, але як тільки я перейшов на 3.3.1, мені довелося внести цю зміну.
Codemonkey

@DanielLlano ви врятуєте мій день
Owaiz Yusufi

1
Це зафіксувало це для мене.
Радагаст Браун

@Crine $(function() {});готовий до документа, що не те саме, що подія завантаження вікна. Також документ, готовий до документа, часто спрацьовує перед завантаженням вікна.
Роберт

Здрастуй, чоловіче, ти можеш сказати мені чому? до того, як вона працювала з версією 1.12.3, і вона перестала працювати, коли я перейшов на 3.4.1
Армандо Маркіс Собриньо

35

Ця помилка часто викликана несумісними версіями jQuery. Я зіткнувся з такою ж помилкою із foundation 6сховищем. Моє сховище використовувало jQuery 3, але для фундації потрібна більш рання версія. Потім я це змінив, і це спрацювало.

Якщо ви подивитеся на версію jQuery, яку вимагає фундамент 5 залежностей, яку вона констатує "jquery": "~2.1.0".

Чи можете ви підтвердити, що ви завантажуєте правильну версію jQuery?

Я сподіваюся, що це допомагає.



17

Я також зіткнувся з цим питанням. Я використовував jquery.poptrox.min.jsдля вискокування зображення та збільшення масштабу, і я отримав помилку, яка сказала:

Помилка "Uncaught TypeError: a.indexOf не є функцією" .

Це тому, що indexOfйого не підтримували 3.3.1/jquery.min.jsнастільки просте виправлення, що це - змінити його на стару версію 2.1.0/jquery.min.js.

Це зафіксувало це для мене.


2
Я перейшов на 3.2.1 до 2.1.0 і це спрацювало. Це працювало для мене.
Сіддхарт

Ласкаво просимо! @Siddharth
Harshit Pant

1
ніколи не повертайтеся до версій, оскільки це може спричинити переважно проблеми безпеки.
Аджай Такур

1
Якщо це так: ви можете замінити наведений нижче код $ (window) .load (function () {...}); із наступним: $ (window) .on ('load', function () {...}); це теж працювало б! :)
Harshit Pant

13

Однією з можливих причин є завантаження jQuery TWICE , наприклад:

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

Отже, перевірте свій вихідний код і видаліть дублікат завантаження jQuery.


2
Це трапляється з wordpress, завантажуючи власну версію, якщо ви також завантажуєте версію jquery на свою сторону.
Олоу

1

Я використовую, jQuery 3.3.1і я отримав таку ж помилку, у моєму випадку URL був anObject рядком проти.

Сталося те, що я взяв URL = window.location- який повернув предмет. Як тільки я змінив його window.location.href- він працював без e.indexOfпомилки.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.