jquery 3.0 url.indexOf hatası


210

Bir kez güncellendi jQuery aşağıdaki hatayı alıyorum v3.0.0.

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

Neden herhangi bir fikir?


kontrol edin, sorununuzu çözebilir olabilir Yakalanmayan TypeError: Tanımsız indexOf
Nalin Aggarwal

4
hatayı tetikleyen jQuery'nin yeni sürümüdür. Eski sürüm gayet iyi.
Kamrul

Ben de şu anda bu içine koşuyorum: 0
Feek

Lütfen cevabı bildirin. Ben elimizdeki açık olduğunu düşünüyorum biri
Mladen Janjetovic

Yanıtlar:


546

Çağıran tüm kodunuzu güncelleyinload ,

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

için

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

jquery.js: 9612 Yakalanmayan TypeError: url.indexOf bir işlev değil

Bu hata mesajı jQuery.fn.loadişlevden gelir .

Başvurumda da aynı sorunla karşılaştım. Biraz araştırmadan sonra bu ifadeyi jQuery blogunda buldum ,

jQuery 1.8'den beri kullanımdan kaldırılan .load, .unload ve .error dosyaları artık yok . Dinleyicileri kaydetmek için .on () kullanın.

Sadece jQuery nesnelerimin loadyukarıdaki gibi işlevi nasıl çağırdığını değiştiririm . Ve her şey beklendiği gibi çalışıyor.


40
Api.jquery.com/load adresindeki dokümanlarında bu sayfada büyük bir kullanımdan kaldırılmadı uyarısı yok .
James McMahon

3
Ben bu aurelia içine zurbs vakıf bootstrapping oldu tam sorun olarak buldum
samuel.molinski

5
Aslında bunu hala yapıyordum tek yer ironik sonra hata kırdı kod işleme oldu: - /
Simon_Weaver

1
Bunun için teşekkürler, mükemmel cevap
KCarnaille

document.readyİşlev olarak kullandım ve bir cazibe gibi çalışıyor.
Merak

29

Daha iyi bir yaklaşım böyle bir çoklu dolgu olabilir

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

Bununla eski kodlara dokunulmaz. Webpack kullanıyorsanız script-loader kullandığınızdan emin olun.


Çok teşekkürler. Hala bir hatam var, James .trigger'i kullanmanı önerdi. jQuery.fn.load = function (callback) {$ (window) .trigger ("load", geri arama); };
rgfx

Üçüncü taraf JS'nin neden olduğu inanılmaz bir çözüm. Başka bir artı, güvenlik açığına neden olacak bir düşürme gerektirmemesidir (3'ün altındaki herhangi bir jquery sürümünde!).
Mateusz

Bu cevap kraldır
Ntiyiso Rikhotso

16

Jquery 3.0, çakışmalar nedeniyle belirli yöntemleri kaldıran bazı değişiklikler içeriyor. Hatanızın nedeni büyük olasılıkla .load () olayının kaldırılması gibi bu değişikliklerden biridir.

JQuery Core 3.0 Yükseltme Kılavuzu'nda daha fazlasını okuyun

Bunu düzeltmek için kodu Jquery 3.0 ile uyumlu olacak şekilde yeniden yazmanız gerekir, aksi takdirde kullanımdan kaldırılan ve / veya kaldırılan API'leri ve davranışları geri yükleyen JQuery Migrate eklentisini kullanabilirsiniz .


4

JQuery en son sürümüne güncelledikten sonra aynı hatayla karşılaştım. Bu nedenle, önceki yanıtta belirtildiği gibi üzerinde çalıştığım jquery dosyasını güncelledim, .on("load")bunun yerine dedi .load().

Bu düzeltme çok kararlı değil ve bazen benim için işe yaramadı. Bu nedenle, bu sorunu gidermek için kodunuzu aşağıdakilerden güncellemelisiniz :

    .load();

için

    .trigger("load");

Bu düzeltmeyi aşağıdaki kaynaktan aldım: https://github.com/stevenwanderski/bxslider-4/pull/1024

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.