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

204

У меня есть этот script:

<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>.

Что случилось с моим script?

  • 19
    Я думаю, что это не ошибка, а просто предупреждение - это можно смело игнорировать.
  • 32
    Это предупреждение следует за последним обновлением Chrome, не волнуйтесь
Показать ещё 5 комментариев
Теги:

7 ответов

211
Лучший ответ

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

Это уже признано и исправлено в jQuery 1.11 (см. здесь и здесь).

  • 12
    Я сомневаюсь, что кто-нибудь сломает это в ближайшее время, если это приведет к разрыву всех страниц, использующих JQuery <1.11.
  • 26
    Это предупреждение также появляется в jQuery 2.0.3 (последняя стабильная версия этого комментария), и текущая веха для исправления установлена на 2.1.
Показать ещё 8 комментариев
21

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

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

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

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

(Он тоже делает это в Twitter, BTW.)

Update

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

19

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

6

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

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

Это вопрос времени (теперь IE8 имеет 10% во всем мире, когда он достигает 1% это DEAD), тем временем просто игнорируйте предупреждение и оставайтесь zen:)

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

Я обнаружил, что использование последней версии устранит эту проблему:
http://code.jquery.com/jquery-git.js

3

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню