Yeni temel projesi açılırken “Yakalanmayan TypeError: a.indexOf bir işlev değil” hatası


251

İle bash aracılığıyla yeni bir Foundation 5 projesi oluşturdum foundation new my-project. İndex.html dosyasını Chrome'da açtığımda Uncaught TypeError: a.indexOf is not a function, konsolda kaynaklanan bir hata gösterilir jquery.min.js:4.

Projeyi vakıf sitesindeki adımları izleyerek oluşturdum, ancak bu hatadan kurtulamıyorum. Foundation ve jQuery, index.html dosyasına dahil edilmiş ve doğru şekilde bağlanmış gibi görünüyor ve bağlı app.js dosyası$(document).foundation();

Bu hataya neyin sebep olduğunu bilen var mı? ve ne bir çözüm olabilir?

Konsol hata mesajı ekran görüntüsü

Yanıtlar:


821

Bu hata gibi jQuery olay takma adları neden olabilir .load(), .unload()ya da .error()hepsi edilir kaldırılmış jQuery 1.8 beri . Kodunuzda bu diğer adları arayın ve yerine .on()yöntemle değiştirin . Örneğin, şu kullanımdan kaldırılmış alıntıyı değiştirin:

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

Takip ederek:

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

3
2.2.1 @Kullanıcıya sahip değildim, ancak 3.3.1'e geçer geçmez bu değişikliği yapmak zorunda kaldım.
— Codemonkey

@DanielLlano sen benim günümü kurtarmak
— Owaiz Yusufi

1
Bu benim için düzeltildi.
— Brown Radagast

@Crine $(function() {});, pencere yükleme olayıyla aynı olmayan belge için hazırdır. Ayrıca, doc hazır pencere yüklemeden önce sık sık ateş açar.
— Robert

Merhaba dostum, bana nedenini söyleyebilir misin? sürüm 1.12.3 ile çalışmadan önce ve 3.4.1'e geçiş yaptığımda çalışmayı durdurdu
— Armando Marques Sobrinho

35

Bu hata genellikle uyumsuz jQuery sürümlerinden kaynaklanır . Bir foundation 6depoda aynı hatayla karşılaştım . Depom kullanıyordu jQuery 3, ancak temelin daha eski bir sürümü gerekiyor. Sonra değiştirdim ve işe yaradı.

Eğer vakıf 5 bağımlılıklarının gerektirdiği jQuery versiyonuna bakarsanız bunu belirtir "jquery": "~2.1.0".

JQuery'nin doğru sürümünü yüklediğinizi onaylayabilir misiniz?

Umarım bu yardımcı olur.


30

Lütfen aşağıya jQuery Migrate Eklentisini ekleyin

<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>

1
Bunun sorunu çözdüğünü onaylıyorum.
— Morad Hamdy

17

Ben de bu sorunla karşılaştım. jquery.poptrox.min.jsGörüntü haşhaş ve yakınlaştırma için kullanıyordum ve şöyle bir hata aldım:

“Yakalanmayan TypeError: a.indexOf bir işlev değil” hatası.

Bunun nedeni indexOfdesteklenmediği 3.3.1/jquery.min.jsiçin bunun basit bir çözümü eski bir sürüme değiştirmek2.1.0/jquery.min.js .

Bu benim için düzeltildi.


2
3.2.1'den 2.1.0'a geçtim ve işe yaradı. Bu benim için çalıştı.
— Siddharth

Hoşgeldiniz ! @Siddharth
— Harshit Pant

1
büyük ölçüde güvenlik sorunlarına yol açabileceğinden, asla sürümlere geri dönmeyin.
— Ajay Takur

1
Bu durumda: $ (window) .load (function () {...}) aşağıdaki kodu değiştirebilirsiniz; aşağıdakilerle birlikte: $ (window) .on ('load', function () {...}); bu da işe yarar! :)
— Harshit Pant

13

Olası nedenlerden biri, jQuery TWICE'ı yüklediğinizde , örneğin:

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

Bu nedenle, kaynak kodunuzu kontrol edin ve yinelenen jQuery yükünü kaldırın.


2
Kendi tarafınıza bir jquery sürümü yüklüyorsanız, wordpress ile kendi sürümünü yükler.
— Olou

1

Ben kullanıyorum jQuery 3.3.1ve benim durumda, aynı hata aldı, URL bir oldu Objectbir dize vs.

Olan şey, aldığım URL = window.location- ki bu bir nesneyi döndürdü. Bir kez değiştirdim window.location.href- e.indexOfhata w / o çalıştı .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.