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.