jquery 3.0 url.indexOf ошибка
Я получаю следующую ошибку от jQuery, как только она была обновлена до v3.0.0
,
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
Есть идеи почему?
4 ответа
Обновите весь ваш код, который звонит 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
функционировать как выше. И все работает как положено.
Лучший подход может быть такой, как это
jQuery.fn.load = function(callback){ $(window).on("load", callback) };
При этом вы можете оставить прежний код без изменений. Если вы используете веб-пакет, обязательно используйте скрипт-загрузчик.
Jquery 3.0 имеет некоторые критические изменения, которые удаляют определенные методы из-за конфликтов. Ваша ошибка, скорее всего, связана с одним из этих изменений, например удалением события.load().
Подробнее читайте в Руководстве по обновлению jQuery Core 3.0
Чтобы это исправить, вам нужно либо переписать код, чтобы он был совместим с Jquery 3.0, либо вы можете использовать плагин JQuery Migrate, который восстанавливает устаревшие и / или удаленные API и поведения.
Я столкнулся с той же ошибкой после обновления до последней версии JQuery. Поэтому я обновил файл jquery, над которым работал, как указано в предыдущем ответе, поэтому он сказал .on("load")
вместо .load()
,
Это исправление не очень стабильно, и иногда оно не работает для меня. Поэтому, чтобы решить эту проблему, вы должны обновить свой код с:
.load();
в
.trigger("load");
Я получил это исправление из следующего источника: https://github.com/stevenwanderski/bxslider-4/pull/1024
@choz ответ - правильный путь. Если у вас много применений и вы хотите убедиться, что он работает везде без изменений, вы можете добавить этот небольшой фрагмент миграции:
/* Migration jQuery from 1.8 to 3.x */
jQuery.fn.load = function (callback) {
var el = $(this);
el.on('load', callback);
return el;
};
В этом случае у вас нет ошибок на других узлах, например, на $image
как в ответе @Korsmakolnikov!
const $image = $('img.image').load(function() {
$(this).doSomething();
});
$image.doSomethingElseWithTheImage();