Ошибка jquery 3.0 url.indexOf

210

Я получаю следующую ошибку от jQuery, как только она была обновлена ​​до v3.0.0.

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

Любая идея почему?

Kamrul
источник
проверьте это, может быть, это решит вашу проблему Uncaught TypeError: Undefined не является функцией indexOf
Налин Аггарвал
4
это новая версия jQuery, которая выдает ошибку. Старая версия в порядке.
Камрул
Я тоже сейчас сталкиваюсь с этим: 0
Feek
Пожалуйста, объявите ответ. Я думаю, это очевидно, что у нас есть один
Младен Янджетович

Ответы:

547

Обновите весь свой код, который вызывает 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 () для регистрации слушателей.

Я просто изменяю, как мои объекты jQuery вызывают loadфункцию, как описано выше. И все работает как положено.

Вади Таслим
источник
40
Это безумие, они не имеют большого устаревшего предупреждения на этой странице в своих документах, api.jquery.com/load .
Джеймс МакМахон
3
Я обнаружил, что это именно та проблема, с которой я столкнулся при начальной загрузке основы zurbs в aurelia
samuel.molinski
5
отчасти иронично, что единственное место, где я на самом деле все еще делал это, было в коде обработки ошибок, который затем ломался сам: - /
Simon_Weaver
1
Спасибо за это, отличный ответ
KCarnaille
Я использовал его в document.readyфункции, и он работает как шарм.
Любопытство
29

Лучший подход может быть такой, как это

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

При этом вы можете оставить прежний код без изменений. Если вы используете веб-пакет, обязательно используйте скрипт-загрузчик.

Korsmakolnikov
источник
Спасибо. Я все еще получил ошибку, Джеймс предложил вам использовать .trigger, это сработало. jQuery.fn.load = function (callback) {$ (window) .trigger ("load", callback); };
rgfx
Удивительное решение, когда оно вызвано сторонним JS. Еще одним плюсом является то, что он не требует понижения версии, что приведет к уязвимости (в любой версии jquery ниже 3!).
Матеуш
Этот ответ король
Ntiyiso Rikhotso
16

Jquery 3.0 имеет некоторые критические изменения, которые удаляют определенные методы из-за конфликтов. Ваша ошибка, скорее всего, связана с одним из этих изменений, например удалением события .load ().

Подробнее читайте в Руководстве по обновлению jQuery Core 3.0

Чтобы это исправить, вам нужно либо переписать код, чтобы он был совместим с Jquery 3.0, либо вы можете использовать плагин JQuery Migrate, который восстанавливает устаревшие и / или удаленные API и поведения.

F3CP
источник
4

Я столкнулся с той же ошибкой после обновления до последней версии JQuery. Поэтому я обновил файл jquery, над которым работал, как указано в предыдущем ответе, поэтому он сказал .on("load")вместо .load().

Это исправление не очень стабильно, и иногда оно не работает для меня. Поэтому, чтобы решить эту проблему, вы должны обновить свой код с:

    .load();

в

    .trigger("load");

Я получил это исправление из следующего источника: https://github.com/stevenwanderski/bxslider-4/pull/1024

Джеймс
источник