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

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(){ ...});

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.


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>

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.


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.


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.


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.