web-dev-qa-db-ja.com

jquery 3.0 url.indexOfエラー

それがv3.0.0に更新された後、私はjQueryから以下のエラーを得ています。

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

何かアイデア?

183
Kamrul

更新 load関数を呼び出すすべてのコード

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

から

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

jquery.js:9612捕捉されないTypeError:url.indexOfは関数ではありません

このエラーメッセージはjQuery.fn.load関数から来ています。

私は自分のアプリケーションで同じ問題に遭遇しました。少し掘り下げた後、私は jQueryブログ でこの文を見つけました。

jQuery 1.8以降で廃止予定の.load、.unload、および.error、 は、もはや ではありません。リスナーを登録するには.on()を使用してください。

私のjQueryオブジェクトがload関数を呼び出す方法を上記のように変更するだけです。そして、すべてが期待通りに動作します。

471
choz

より良いアプローチはこのようなポリフィルかもしれません

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

これにより、レガシーコードをそのままにすることができます。あなたがwebpackを使っているなら、必ずscript-loaderを使ってください。

20
Korsmakolnikov

Jquery 3.0には、衝突のために特定のメソッドを削除するいくつかの重大な変更があります。あなたのエラーは、ほとんどの場合、.load()イベントの削除など、これらの変更のいずれかが原因です。

jQuery Core 3.0アップグレードガイドを読んでください

これを修正するには、Jquery 3.0と互換性があるようにコードを書き直す必要があります。あるいは、非推奨または削除されたAPIや動作を復元する JQuery Migrateプラグイン を使用できます。

15
F3CP

最新バージョンのJQueryに更新した後に同じエラーが発生しました。したがって、前回の回答で述べたように、作業中のjqueryファイルを更新したので、.on("load")ではなく.load()となりました。

この修正はあまり安定していませんし、時にはうまくいきませんでした。したがって、この問題を解決するには、 update からコードを書く必要があります。

    .load();

から

    .trigger("load");

私は次のソースからこの修正を得ました: https://github.com/stevenwanderski/bxslider-4/pull/1024

2
James