event.returnValue застарілий. Будь ласка, використовуйте замість нього стандартний event.preventDefault ()


222

У мене є такий сценарій:

<script>
$(document).ready(function () {
    $("#changeResumeStatus").click(function () {
        $.get("{% url 'main:changeResumeStatus' %}", function (data) {
            if (data['message'] == 'hidden') {
                $("#resumeStatus").text("скрыто");
            } else {
                $("#resumeStatus").text("опубликовано");
            }
        }, "json");
    });
});
</script>

У моїй консолі Google Chrome з’являється така помилка:

event.returnValue застарілий. Будь ласка, використовуйте замість нього стандартний event.preventDefault ().

Я використовую jQuery v1.10.2 і #changeResumeStatusє a <span>.

Що не так з моїм сценарієм?


19
Я думаю, що це не помилка, а лише попередження - це можна сміливо ігнорувати.
Qantas 94 Важкий

32
Це попередження після останнього оновлення хрому, не хвилюйтесь
А. Вольф

2
Вам слід заглянути в рятуються рядки, що не входять до ассії.
Глено

4
@AlexParakhnevich Немає жодної переконливої ​​причини для цього, але кілька незначних, які час від часу повзуть. Чесно кажучи, моя реакція була інстинктивною, а не продуманою. У проектах, над якими я зараз працюю, є вказівки не використовувати символи, що не відносяться до ascii, в літералах, які я запроваджував раніше, оскільки деякі зовнішні інструменти (компілятор машинописних текстів) задихалися від такого вкладу. Він працює досить добре в більшості випадків, але іноді з'їдає багато часу для розробників, коли справи йдуть не так. У будь-якому випадку, .empty().append("text")краще виражається як .text("text").
Глено

1
@Gleno дякую за обмін
Олексій Парахневич

Відповіді:


204

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

Це вже було розпізнано та зафіксовано у jQuery 1.11 (див. Тут та тут ).


12
Я сумніваюся, що хтось порушить це в будь-який час незабаром, якщо це означає, що всі сторінки, що використовують JQuery <1.11, зриваються.
Backpackcoder

26
Це попередження також з’являється у jQuery 2.0.3 (остання стабільна стаття на цей коментар), а поточна віха встановлена ​​на 2.1, для виправлення.
протидія

Чи вирішить проблему використання jQuery 1.11?
Крунал

Просто для уточнення ... jQueryвже НЕ рекомендується , використовуючи return falseв обробниках кліка? Це Chrome, який скаржиться на фрагмент коду, знайденого всередині бібліотеки jQuery?
квітня

2
Справді. Chrome застаріло, event.returnValueщо існувало лише для зворотної сумісності з IE
Пол Моугель

22

Що стосується інших довідок, я щойно отримав це і виявив, що це пов’язано з AngularJS . Це для зворотної сумісності:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}

4
Я отримую помилку на ділянці з голими кістками, не використовуючи або посилаючись на них, - можливо, це побічно посилається, але я сумніваюся в цьому.
Б. Клей Шеннон

1
@ B.ClayShannon: Це не помилка, це попередження. Існує велика різниця, особливо в нашому контексті. Ви можете сміливо ігнорувати це.
f.ardelian

1
@ B.ClayShannon Якщо ви його взагалі включите, Chrome розбере його точно так само, як якщо б це був сценарій, який ви надали, і (правильно) викине попередження.
iCodeSometime

20

Якщо ви використовуєте Bootstrap :

Поточна версія Bootstrap (3.0.2) (з jQuery 1.10.2 та Chrome), схоже, також генерує це попередження.

(Це робиться і в Twitter, BTW.)

Оновлення

Поточна версія Bootstrap (3.1.0) вже не видає цього попередження.



6

Це попередження, пов’язане з тим, що більшість фреймворків JavaScript (jQuery, Angular, YUI, Bootstrap ...) пропонують зворотну підтримку старого-бридкого-найнависнішого Internet Explorer, починаючи від IE8 і закінчуючи IE6: /

Одного дня ця підтримка зворотної сумісності буде відхилена (для IE8 / 7/6, оскільки IE9 займається цим ), і ви більше не побачите це попередження (та інші помилки IEish) ..

Це питання часу (зараз IE8 має 10% у всьому світі , як тільки він досягне 1%, це ДІД ), тим часом просто ігноруйте попередження та залишайтеся дзен :)


jQuery 2.xx підтримує лише IE9 та новіші версії. Якщо ви хочете підтримати IE8 в jQuery, вам потрібно скористатись версією 1.xx
Pete


3

Я бачив це попередження на багатьох веб-сайтах. Також я побачив, що бібліотека YUI 3 також дає таке ж попередження. Це попередження, створене з бібліотеки (чи це jQuery чи YUI).

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