Зачем мне нужен jquery-migrate-1.4.1.js после успешного обновления jQuery?

Я закончил обновление jQuery с 1.3.1 до 1.12.4. Все работает правильно, и я готов удалить jquery-migrate-1.4.1.js, потому что я использовал его только для целей отладки во время процесса обновления.

Когда я удаляю jquery-migrate-1.4.1.js из <head> раздел моего сайта, страница больше не работает должным образом. Что-то ломается в JavaScript/jQuery. Я читал https://blog.jquery.com/2016/05/19/jquery-migrate-1-4-1-released-and-the-path-to-jquery-3-0/ пытаясь найти информацию о это, и это то, что я нашел:

Удалите плагин Migrate 1.x и убедитесь, что страница по-прежнему работает без загрузки.

Зачем мне нужен jquery-migrate-1.4.1.js после успешного обновления jQuery? Я думал, что это был только "закулисный" сценарий исключительно для целей отладки, а не для поддержания какой-либо функциональности jQuery /JavaScript.

1 ответ

Решение

Недоразумение, которое сбивает вас с толку в данный момент, заключается в том, что цель jquery-migrate-1.4.1.js состоит в том, чтобы установить несколько обратных решений, чтобы ранний код jQuery работал в более свежем jQuery, а также жаловался в console.log, чтобы вы могли это исправить. Это на самом деле не меняет ваш код. Несколько указателей, которые помогут вам перейти на основе ваших комментариев:

Я вижу, например: "JQMIGRATE: jQuery.browser устарела". Это странно, потому что источником этой ошибки является jquery-migrate-1.4.1.js:45, а это файл jquery-migrate-1.4.1.js, а не то, что я использую jQuery.browser в своем коде.

Строка, выполняющая регистрацию, находится в jquery-migrate-1.4.1.js поэтому ошибка, по-видимому, указывает на этот файл, однако строка, вызывающая jQuery.browser может быть в плагине, который вы загружаете (это было распространено в первые дни jQuery, когда люди писали хаки для браузера). Вы можете попробовать поискать .browser во всех ваших ссылках .js файлы (даже уменьшенные), чтобы хотя бы изолировать плагин, а затем попытаться найти альтернативы.

Я вижу такие вещи, как: "jquery-migrate-1.4.1.js:45 JQMIGRATE: jQuery.fn.size() устарела; используйте свойство.length". Но я не могу найти jQuery.fn.size () в моем исходном коде.

Подход jQuery.fn.size() может появиться в вашем коде так:

$('li.items').size()

jQuery.fn это просто имя объекта функций элемента jQuery. Поскольку ваш объект jQuery основан на селекторе jQuery, который вы написали, его может быть трудно найти, вместо этого ищите что-то вроде .size() и если он отображается справа от селектора jQuery, попробуйте заменить его просто .length (без скобок, как length это просто собственность).

Если у вас есть другие вопросы, вам, вероятно, лучше опубликовать их как новые вопросы, чтобы они могли получить более прямые и в целом полезные ответы.

Другие вопросы по тегам