jquery 3.0 url.indexOf помилка


210

Я отримую наступну помилку від jQuery після її оновлення до v3.0.0.

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

Будь-яка ідея чому?


перевірте це, можливо це вирішує вашу проблему Uncaught TypeError: Undefined не є функцією indexOf
Nalin Aggarwal

4
це нова версія jQuery запускає помилку. Стара версія прекрасна.
Камруль

Я теж зараз в цьому
стикаюся

Будь ласка, заявіть відповідь. Я думаю, що очевидно, що у нас є такий
Младен Яньєтович,

Відповіді:


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 () для реєстрації слухачів.

Я просто змінюю, як мої об’єкти jQuery викликають loadфункцію, як вище. І все працює так, як очікувалося.


40
Божевільно, що вони не мають великого застарілого попередження на цій сторінці у своїх документах, api.jquery.com/load .
Джеймс Макмахон

3
Я виявив, що це саме та проблема, яку я мав при завантаженні фундаменту зурб в
аурелію

5
начебто іронічно, що єдиним місцем, яке я насправді все-таки займав це, було в коді обробки помилок, який потім зламався: - /
Simon_Weaver

1
Дякую за це, ідеальна відповідь
KCarnaille

Я використовував це у document.readyфункції, і він працює як шарм.
цікавість

29

Кращим підходом може бути подібний поліфіл

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

За допомогою цього ви можете залишити застарілий код недоторканим. Якщо ви використовуєте веб-пакет, обов'язково використовуйте завантажувач сценаріїв.


Дуже дякую. Я все-таки отримав помилку, Джеймс запропонував вам використовувати. Тригер це спрацювало. jQuery.fn.load = функція (зворотний виклик) {$ (window) .trigger ("завантаження", зворотний виклик); };
rgfx

Дивовижне рішення, коли його спричиняють сторонні JS. Ще одним плюсом є те, що він не потребує пониження рівня, що спричинить вразливість (у будь-якій версії jquery нижче 3!).
Матеуш

Ця відповідь короля
Нтіїсо Ріхоцо

16

Jquery 3.0 має деякі неполадки, які видаляють певні методи через конфлікти. Ваша помилка, швидше за все, пов'язана з однією з таких змін, як-от видалення події .load ().

Детальніше читайте в Посібнику з оновлення jQuery Core 3.0

Щоб виправити це, вам або потрібно переписати код на сумісний з Jquery 3.0, або ж ви можете використовувати плагін JQuery Migrate, який відновлює застарілі та / або видалені API та поведінку.


4

Я зіткнувся з тією ж помилкою після оновлення до останньої версії JQuery. Тому я оновив файл jquery, над яким працював, як сказано в попередній відповіді, і він сказав .on("load")замість цього .load().

Це виправлення не дуже стабільне, і іноді воно не працювало для мене. Тому для вирішення цієї проблеми вам слід оновити свій код з:

    .load();

до

    .trigger("load");

Я отримав це виправлення з наступного джерела: https://github.com/stevenwanderski/bxslider-4/pull/1024

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.