event.returnValue è deprecato. Utilizzare invece lo standard event.preventDefault ()


222

Ho questo 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>

Ricevo il seguente errore nella mia console di Google Chrome:

event.returnValue è deprecato. Utilizzare invece lo standard event.preventDefault ().

Sto usando jQuery v1.10.2 ed #changeResumeStatusè un <span>.

Cosa c'è che non va nella mia sceneggiatura?


19
Penso che non sia un errore, ma solo un avvertimento: questo può essere tranquillamente ignorato.
Qantas 94 Pesante,

32
Questo avviso segue l'ultimo aggiornamento di Chrome, non ti preoccupare
A. Wolff,

2
Dovresti cercare di sfuggire alle stringhe non ascii.
Gleno,

4
@AlexParakhnevich Non c'è un unico motivo convincente per farlo, ma alcuni minori che si insinuano di volta in volta. La mia reazione è stata istintiva piuttosto che ben ponderata, a dire il vero. Nei progetti a cui sto lavorando in questo momento, c'è una linea guida per non usare caratteri non ascii nei letterali, che ho istituito in passato, perché alcuni strumenti esterni (compilatore di dattiloscritti) sono soffocati su tale input. Funziona abbastanza bene nella maggior parte dei casi, ma a volte consuma molto tempo per gli sviluppatori quando le cose vanno male. Comunque, .empty().append("text")è meglio espresso come .text("text").
Gleno,

1
@Gleno grazie per la condivisione
Alex Parakhnevich,

Risposte:


204

Questo è solo un avvertimento: il tuo codice funziona ancora, ma probabilmente non funzionerà in futuro poiché il metodo è obsoleto. Vedi la fonte rilevante di Chromium e la patch corrispondente .

Questo è già stato riconosciuto e corretto in jQuery 1.11 (vedi qui e qui ).


12
Dubito che qualcuno lo interromperà presto in qualsiasi momento se ciò significa che tutte le pagine che utilizzano JQuery <1.11 si interrompono.
Backpackcoder,

26
Questo avviso viene visualizzato anche con jQuery 2.0.3 (stabile più recente di questo commento) e l'attuale pietra miliare è impostata su 2.1, per la correzione.
Contrattazione del

L'uso di jQuery 1.11 risolverà il problema?
Krunal

Giusto per chiarire ... jQueryè non deprecato utilizzare return falsenei vostri gestori di click? Questo è Chrome lamentano un frammento di codice che si trova all'interno della libreria jQuery?
mpen

2
Infatti. Chrome è deprecato event.returnValueche esisteva solo per compatibilità con IE all'indietro
Paul Mougel

22

Solo per riferimento di altri, ho appena ricevuto questo e ho scoperto che era dovuto ad AngularJS . È per compatibilità con le versioni precedenti:

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

4
Ricevo l'errore in un sito di ossa nude senza angolare utilizzato o referenziato - probabilmente indirettamente referenziato, ma ne dubito.
B. Clay Shannon,

1
@ B.ClayShannon: non è un errore, è un avvertimento. C'è una grande differenza, specialmente nel nostro contesto. Puoi tranquillamente ignorarlo.
f.ardelian

1
@ B.ClayShannon Se lo includi affatto, Chrome lo analizzerà esattamente come se fosse uno script che hai fornito e (correttamente) lancerà l'avvertimento.
iCodeSometime

20

Se si utilizza Bootstrap :

Anche l'attuale versione di Bootstrap (3.0.2) (con jQuery 1.10.2 e Chrome) sembra generare questo avviso.

(Lo fa anche su Twitter, BTW.)

Aggiornare

La versione corrente di Bootstrap (3.1.0) non sembra più generare questo avviso.



6

Questo è un avvertimento legato al fatto che la maggior parte dei framework JavaScript (jQuery, Angular, YUI, Bootstrap ...) offrono supporto all'indietro per Internet Explorer vecchio-cattivo-odiato a partire da IE8 fino a IE6: /

Un giorno il supporto per la compatibilità con le versioni precedenti verrà eliminato (per IE8 / 7/6 poiché IE9 lo gestisce) e non vedrai più questo avviso (e altri bug di IEish).

È una questione di tempo (ora IE8 ha il 10% di share in tutto il mondo , una volta che raggiunge l' 1% è MORTO ), nel frattempo, basta ignorare l'avvertimento e rimanere zen :)


jQuery 2.xx supporta solo IE9 e versioni successive. Se vuoi il supporto IE8 in jQuery devi usare la versione 1.xx
Pete


3

Ho visto questo avviso su molti siti Web. Inoltre, ho visto che anche la libreria YUI 3 dà lo stesso avvertimento. È un avviso generato dalla libreria (che si tratti di jQuery o YUI).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.