event.returnValue foi descontinuado. Por favor, use o event.preventDefault () padrão

222

Eu tenho este 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>

Eu recebo o seguinte erro no meu console do Google Chrome:

event.returnValue foi descontinuado. Por favor, use o event.preventDefault () padrão.

Estou usando o jQuery v1.10.2 e #changeResumeStatusé um <span>.

O que há de errado com o meu script?

Alex Parakhnevich
fonte
19
Acho que isso não é um erro, mas apenas um aviso - este pode ser ignorado com segurança.
Qantas 94 Heavy
32
Este aviso é seguinte atualização mais recente cromo, não se preocupe
A. Wolff
2
Você deve tentar escapar de seqüências não-ascii.
Gleno
4
@AlexParakhnevich Não há uma razão única e convincente para fazê-lo, mas algumas pequenas que surgem de tempos em tempos. Minha reação foi instintiva e não bem pensada, para ser sincera. Nos projetos em que estou trabalhando agora, há uma diretriz para não usar caracteres não-ascii em literais, que eu instituí no passado, porque algumas ferramentas externas (compilador datilografado) se engasgaram com essa entrada. Funciona bem o suficiente na maioria dos casos, mas às vezes consome muito tempo do desenvolvedor quando as coisas dão errado. Enfim, .empty().append("text")é melhor expresso como .text("text").
amigos estão dizendo
1
@Gleno obrigado por compartilhar
Alex Parakhnevich

Respostas:

204

Isso é apenas um aviso: seu código ainda funciona, mas provavelmente não funcionará no futuro, pois o método está obsoleto. Consulte a fonte relevante de cromo e o adesivo correspondente .

Isso já foi reconhecido e corrigido no jQuery 1.11 (veja aqui e aqui ).

Paul Mougel
fonte
12
Duvido que alguém o interrompa tão cedo, se isso significa que todas as páginas que usam o JQuery <1.11 quebram.
Backpackcoder
26
Esse aviso também aparece no jQuery 2.0.3 (estável mais recente a partir deste comentário) e o marco atual é definido como 2.1, para a correção.
counterbeing
O uso do jQuery 1.11 resolverá o problema?
quer
Só para esclarecer ... nãojQuery foi descontinuado usando nos manipuladores de cliques? Isso é o Chrome reclamando de um trecho de código encontrado dentro da biblioteca jQuery? return false
MPEN
2
De fato. Chrome tem obsoleta event.returnValueque só existia para compatibilidade com IE
Paul Mougel
22

Apenas para referência de outros, acabei de receber isso e achei que era devido ao AngularJS . É para compatibilidade com versões anteriores:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
fonte
4
Estou recebendo o erro em um site bare bones sem angular sendo usado ou referenciado - possivelmente referenciado indiretamente, mas duvido.
B. Clay Shannon
1
@ B.ClayShannon: Não é um erro, é um aviso. Há uma grande diferença, especialmente em nosso contexto. Você pode ignorá-lo com segurança.
f.ardelian
1
@ B.ClayShannon Se você incluí-lo, o Chrome o analisará exatamente como se fosse um script que você forneceu e (corretamente) lançará o aviso.
ICodeSometime
20

Se você estiver usando o Bootstrap :

A versão atual do Bootstrap (3.0.2) (com jQuery 1.10.2 e Chrome) parece gerar esse aviso também.

(Isso também ocorre no Twitter, a propósito.)

Atualizar

A versão atual do Bootstrap (3.1.0) não parece mais gerar esse aviso.

ensignr
fonte
19

Esse é o seu problema na API do jQuery , não o seu script. Não há muito com que se preocupar.

Victor Zhang
fonte
6

Este é um aviso relacionado ao fato de que a maioria das estruturas JavaScript (jQuery, Angular, YUI, Bootstrap ...) oferece suporte retroativo ao Internet Explorer mais odioso e desagradável desde o IE8 até o IE6: /

Um dia, o suporte à compatibilidade com versões anteriores será descartado (para o IE8 / 7/6, pois o IE9 lida com ele ) e você não verá mais esse aviso (e outros erros do IEish).

É uma questão de tempo (agora o IE8 tem 10% de participação em todo o mundo , uma vez que atinge 1%, está MORTO ), enquanto isso, apenas ignore o aviso e fique zen :)

numediaweb
fonte
O jQuery 2.xx suporta apenas o IE9 e superior. Se você quiser suporte ao IE8 no jQuery, precisará usar a versão 1.xx
Pete
3

Vi esse aviso em muitos sites. Além disso, vi que a biblioteca YUI 3 também dá o mesmo aviso. É um aviso gerado a partir da biblioteca (seja jQuery ou YUI).

eAbi
fonte