Kesalahan "Uncaught TypeError: a.indexOf bukan fungsi" saat membuka proyek yayasan baru

250

Saya telah membuat proyek Foundation 5 baru melalui bash, dengan foundation new my-project. Ketika saya membuka file index.html di Chrome, sebuah Uncaught TypeError: a.indexOf is not a functionkesalahan ditampilkan di konsol, yang berasal dari jquery.min.js:4.

Saya membuat proyek mengikuti langkah-langkah di situs yayasan, tapi sepertinya saya tidak bisa menghilangkan kesalahan ini. Foundation dan jQuery terlihat seperti mereka disertakan dan dihubungkan dengan benar dalam file index.html, dan file app.js yang tertaut sudah termasuk$(document).foundation();

Adakah yang tahu apa yang menyebabkan kesalahan ini? dan apa solusinya?

Tangkapan layar pesan kesalahan konsol

FreddieE
sumber

Jawaban:

819

Kesalahan ini mungkin disebabkan oleh jQuery alias alias .load(), .unload()atau .error()semua sudah tidak digunakan lagi sejak jQuery 1.8 . Cari alias ini di kode Anda dan ganti dengan .on()metode sebagai gantinya. Misalnya, ganti kutipan usang berikut:

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

dengan yang berikut ini:

$(window).on('load', function(){ ...});
Daniel Llano
sumber
3
Saya tidak memilikinya dengan 2.2.1 @ Pengguna, tetapi segera setelah saya beralih ke 3.3.1 saya harus melakukan perubahan ini.
Codemonkey
@DanielLlano tolong selamatkan hari saya
Owaiz Yusufi
1
Ini memperbaikinya untuk saya.
Radagast the Brown
@Crine $(function() {});adalah untuk dokumen siap, yang tidak sama dengan acara memuat jendela. Juga, doc ready sering menyala sebelum memuat jendela.
Robert
Halo teman, bisakah Anda memberi tahu saya alasannya? sebelum itu bekerja dengan versi 1.12.3 dan berhenti bekerja ketika saya pindah ke 3.4.1
Armando Marques Sobrinho
35

Kesalahan ini sering disebabkan oleh versi jQuery yang tidak kompatibel . Saya mengalami kesalahan yang sama dengan foundation 6repositori. Repositori saya gunakan jQuery 3, tetapi foundation membutuhkan versi yang lebih lama. Saya kemudian mengubahnya dan berhasil.

Jika Anda melihat versi jQuery yang diperlukan oleh yayasan 5 dependensi itu menyatakan "jquery": "~2.1.0".

Bisakah Anda mengonfirmasi bahwa Anda memuat versi jQuery yang benar?

Saya harap ini membantu.

shaune
sumber
29

Silakan tambahkan di bawah Plugin Migrasi jQuery

<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
sumber
Saya mengkonfirmasi bahwa ini telah menyelesaikan masalah.
Morad Hamdy
17

Saya menghadapi masalah ini juga. Saya menggunakan jquery.poptrox.min.jsuntuk pemunculan dan pembesaran gambar dan saya menerima kesalahan yang mengatakan:

Kesalahan "Uncaught TypeError: a.indexOf bukan fungsi" .

Ini karena indexOftidak didukung 3.3.1/jquery.min.jssehingga perbaikan sederhana untuk ini adalah mengubahnya ke versi lama 2.1.0/jquery.min.js.

Ini memperbaikinya untuk saya.

Celana Harshit
sumber
2
Saya pindah ke 3.2.1 ke 2.1.0 dan berhasil. Ini berhasil untuk saya.
Siddharth
Selamat datang ! @Siddharth
Harshit Pant
1
jangan pernah kembali ke versi karena dapat mengakibatkan masalah keamanan besar.
Ajay Takur
1
Jika itu masalahnya: Anda dapat mengganti kode di bawah ini $ (window) .load (function () {...}); dengan yang berikut: $ (window) .on ('load', function () {...}); itu juga akan berhasil! :)
Harshit Pant
13

Salah satu alasan yang mungkin adalah ketika Anda memuat jQuery DUA KALI , seperti:

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

Jadi, periksa kode sumber Anda dan hapus duplikat jQuery load.

T.Todua
sumber
2
Ini terjadi dengan wordpress, memuat versinya sendiri, jika Anda juga memuat versi jquery di sisi Anda.
Olou
1

Saya menggunakan jQuery 3.3.1dan saya menerima kesalahan yang sama, dalam kasus saya, URL adalah Objectstring vs.

Apa yang terjadi adalah, yang saya ambil URL = window.location- yang mengembalikan objek. Setelah saya mengubahnya menjadi window.location.href- itu berhasil tanpa e.indexOfkesalahan.

Ricky Levi
sumber
0

Saya memecahkan masalah ini dengan menginstal versi yang benar dari Jqueryyang dibutuhkan oleh proyek sayanpm

Ntiyiso Rikhotso
sumber