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является <span>.

Что не так с моим сценарием?

Алекс парахневич
источник
19
Я думаю, что это не ошибка, а просто предупреждение - это можно смело игнорировать.
Qantas 94 Heavy
32
Это предупреждение следует за последним обновлением Chrome, не волнуйтесь
A. Wolff
2
Вы должны изучить экранирование не-ascii строк.
Глено
4
@AlexParakhnevich Нет единой веской причины для этого, но есть несколько незначительных, которые время от времени подкрадываются. Честно говоря, моя реакция была инстинктивной, а не продуманной. В проектах, над которыми я сейчас работаю, есть рекомендация не использовать символы не-ascii в литералах, которые я установил в прошлом, потому что некоторые внешние инструменты (компилятор машинописи) подавились таким вводом. В большинстве случаев он работает достаточно хорошо, но иногда уходит много времени разработчиков, когда что-то идет не так. Во всяком случае, .empty().append("text")лучше выражается как .text("text").
Глено
1
@Gleno спасибо за то, что поделились
Алексей Парахневич

Ответы:

204

Это только предупреждение: ваш код все еще работает, но, вероятно, не будет работать в будущем, так как метод устарел. Смотрите соответствующий источник хрома и соответствующий патч .

Это уже было распознано и исправлено в 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
Paul Mougel
22

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

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
источник
4
Я получаю сообщение об ошибке на голом сайте без использования углов или ссылок - возможно, косвенно, но я сомневаюсь в этом.
Б. Клэй Шеннон
1
@ B.ClayShannon: Это не ошибка, это предупреждение. Есть большая разница, особенно в нашем контексте. Вы можете смело игнорировать это.
f.ardelian
1
@ B.ClayShannon Если вы вообще включите его, Chrome проанализирует его точно так же, как если бы он был предоставлен вами, и (правильно) выдаст предупреждение.
iCodeSometime
20

Если вы используете Bootstrap :

Текущая версия Bootstrap (3.0.2) (с jQuery 1.10.2 и Chrome), похоже, также генерирует это предупреждение.

(Кстати, и в Твиттере.)

Обновить

Текущая версия Bootstrap (3.1.0) больше не генерирует это предупреждение.

ensignr
источник
19

Это ваша проблема с jQuery API , а не ваш скрипт. Не о чем беспокоиться.

Виктор Чжан
источник
6

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

Однажды эта поддержка обратной совместимости будет прекращена (для IE8 / 7/6, поскольку IE9 с ней справится), и вы больше не увидите это предупреждение (и другие ошибки IEish).

Это вопрос времени (сейчас IE8 имеет 10% доли по всему миру , а когда он достигает 1%, он становится МЕРТВЫМ ), тем временем, просто игнорируйте предупреждение и оставайтесь дзен :)

numediaweb
источник
jQuery 2.xx поддерживает только IE9 и выше. Если вы хотите поддержку IE8 в jQuery, вам нужно использовать версию 1.xx
Пит
3

Я видел это предупреждение на многих сайтах. Также я увидел, что библиотека YUI 3 также выдает то же предупреждение. Это предупреждение генерируется из библиотеки (будь то JQuery или YUI).

EABI
источник