jquery 3.0 url.indexOf error

210

Saya mendapatkan galat berikut dari jQuery setelah diperbarui v3.0.0.

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

Ada Ide mengapa?

Kamrul
sumber
periksa ini, mungkin itu menyelesaikan masalah Anda. Uncaught TypeError: Undefined bukan fungsi pada indexOf
Nalin Aggarwal
4
ini adalah versi baru dari jQuery yang menembak kesalahan. Versi lama tidak masalah.
Kamrul
Aku juga sedang menjalankan ini: 0
Feek
Silakan nyatakan jawabannya. Saya pikir sudah jelas kita punya satu
Mladen Janjetovic

Jawaban:

546

Perbarui semua kode Anda yang loadberfungsi seperti panggilan ,

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

Untuk

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

jquery.js: 9612 Uncaught TypeError: url.indexOf bukan sebuah fungsi

Pesan kesalahan ini berasal dari jQuery.fn.loadfungsi.

Saya telah menemukan masalah yang sama pada aplikasi saya. Setelah menggali, saya menemukan pernyataan ini di blog jQuery ,

.load, .unload, dan .error, sudah tidak digunakan lagi sejak jQuery 1.8, tidak ada lagi . Gunakan .on () untuk mendaftarkan pendengar.

Saya hanya cukup mengubah bagaimana objek jQuery saya memanggil loadfungsi seperti di atas. Dan semuanya berjalan seperti yang diharapkan.

vadi taslim
sumber
40
Sungguh gila mereka tidak memiliki peringatan usang yang besar pada halaman ini di dokumen mereka, api.jquery.com/load .
James McMahon
3
Saya menemukan ini menjadi masalah persis yang saya alami ketika bootstrap zurbs foundation ke aurelia
samuel.molinski
5
agak ironis bahwa satu-satunya tempat saya sebenarnya masih melakukan ini adalah dalam kode penanganan kesalahan yang kemudian pecah sendiri: - /
Simon_Weaver
1
Terima kasih untuk ini, jawaban sempurna
KCarnaille
Saya menggunakannya dalam document.readyfungsi dan bekerja seperti pesona.
Curiosity
29

Pendekatan yang lebih baik bisa berupa polyfill seperti ini

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

Dengan ini, Anda dapat membiarkan kode lama tidak tersentuh. Jika Anda menggunakan webpack, pastikan untuk menggunakan skrip-loader.

Korsmakolnikov
sumber
Terima kasih banyak. Saya masih mendapat kesalahan, James menyarankan Anda menggunakan .trigger ini berfungsi. jQuery.fn.load = fungsi (callback) {$ (window) .trigger ("load", callback); };
rgfx
Solusi luar biasa saat itu disebabkan oleh JS pihak ketiga. Kelebihan lainnya adalah tidak memerlukan downgrade, yang akan menyebabkan kerentanan (dalam versi jquery di bawah 3!).
Mateusz
Jawaban ini adalah raja
Ntiyiso Rikhotso
16

Jquery 3.0 memiliki beberapa perubahan besar yang menghapus metode tertentu karena konflik. Kesalahan Anda kemungkinan besar karena salah satu perubahan ini seperti penghapusan acara .load ().

Baca lebih lanjut di Panduan Upgrade jQuery Core 3.0

Untuk memperbaikinya, Anda harus menulis ulang kode agar kompatibel dengan Jquery 3.0 atau Anda dapat menggunakan plugin JQuery Migrate yang mengembalikan API dan perilaku yang tidak digunakan dan / atau dihapus.

F3CP
sumber
4

Saya menemukan kesalahan yang sama setelah memperbarui ke versi terbaru JQuery. Oleh karena itu saya memperbarui file jquery yang sedang saya kerjakan, seperti yang dinyatakan dalam jawaban sebelumnya, jadi katanya .on("load")bukan .load().

Perbaikan ini tidak terlalu stabil dan terkadang tidak berhasil untuk saya. Karenanya untuk memperbaiki masalah ini Anda harus memperbarui kode Anda dari:

    .load();

untuk

    .trigger("load");

Saya mendapatkan perbaikan ini dari sumber berikut: https://github.com/stevenwanderski/bxslider-4/pull/1024

James
sumber