jquery 3.0 url.indexOfエラー


210

jQueryがに更新された後、次のエラーが発生しv3.0.0ます。

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

何かアイデアは?


これをチェックして、問題が解決されるかどうかを確認しますUncaught TypeError:Undefined is not a function on indexOf
Nalin Aggarwal

4
エラーを発生させるjQueryの新しいバージョンです。古いバージョンで結構です。
カムルル2016年


答えを宣言してください。私はそれが我々が持っている明白だと思う1
ムラデンJanjetovic

回答:


546

次のloadような関数を呼び出すすべてのコードを更新します。

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

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

jquery.js:9612 Uncaught TypeError:url.indexOfは関数ではありません

このエラーメッセージはjQuery.fn.load関数からのものです。

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

.load、.unload、および.errorは、jQuery 1.8以降非推奨になりました。.on()を使用してリスナーを登録します。

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


40
彼らがドキュメントapi.jquery.com/loadのこのページに非推奨の大きな警告を表示していないのはおかしいです。
James McMahon

3
これは、zurbsファウンデーションをオーレリアにブートストラップするときに私が抱えていた正確な問題であることがわかりました
samuel.molinski

5
皮肉なことに、私が実際にこれを行っていた唯一の場所はエラー処理コードでしたが、それがそれ自体を壊しました:-/
Simon_Weaver

1
これをありがとう、完璧な答え
KCarnaille 2018

私はそれをdocument.ready機能で使用し、それは魅力のように働いています。
好奇心

29

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

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

これにより、レガシーコードをそのままにしておくことができます。webpackを使用する場合は、必ずスクリプトローダーを使用してください。


本当にありがとう。それでもエラーが発生します。ジェームスは、これが機能する.triggerを使用することを勧めました jQuery.fn.load =関数(コールバック){$(window).trigger( "load"、callback); };
rgfx 2017

サードパーティのJSが原因のすばらしいソリューション。もう1つの利点は、ダウングレードを必要としないことです。これにより、脆弱性が発生します(jqueryのバージョンが3未満の場合)。
Mateusz

この答えは王様です
Ntiyiso Rikhotso

16

jquery 3.0には、競合のために特定のメソッドを削除するいくつかの重大な変更があります。エラーの原因として最も可能性が高いのは、.load()イベントの削除など、これらの変更の1つです。

jQuery Core 3.0アップグレードガイドで詳細を読む

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


4

JQueryの最新バージョンに更新した後、同じエラーに遭遇しました。したがって、前の回答で述べたように、私が作業していたjqueryファイルを更新したので、の.on("load")代わりにそれが言いました.load()

この修正はあまり安定しておらず、うまくいかない場合があります。したがって、この問題を修正するには、次のコードを更新する必要があります。

    .load();

    .trigger("load");

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.