Ошибка jquery 3.0 url.indexOf

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

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

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

Ответ 1

Обновить весь ваш код, который вызывает функцию 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, как указано выше. И все работает так, как ожидалось.

Ответ 2

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

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

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

Ответ 3

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

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

С этим вы можете оставить устаревший код нетронутым. Если вы используете webpack, обязательно используйте script -loader.

Ответ 4

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

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

    .load();

до

    .trigger("load");

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