event.returnValue ist veraltet. Bitte verwenden Sie stattdessen das Standardereignis.preventDefault ()

222

Ich habe dieses Skript:

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

In meiner Google Chrome-Konsole wird folgende Fehlermeldung angezeigt:

event.returnValue ist veraltet. Bitte verwenden Sie stattdessen das Standardereignis.preventDefault ().

Ich verwende jQuery v1.10.2 und #changeResumeStatusist ein <span>.

Was ist los mit meinem Skript?

Alex Parakhnevich
quelle
19
Ich denke, das ist kein Fehler, sondern nur eine Warnung - diese kann ignoriert werden.
Qantas 94 Heavy
32
Diese Warnung folgt dem letzten Chrome-Update, keine Sorge
A. Wolff
2
Sie sollten sich mit dem Entkommen von Nicht-ASCII-Zeichenfolgen befassen.
Gleno
4
@AlexParakhnevich Es gibt keinen zwingenden Grund dafür, aber ein paar kleinere, die sich von Zeit zu Zeit einschleichen. Um ehrlich zu sein, war meine Reaktion eher instinktiv als gut durchdacht. In Projekten, an denen ich gerade arbeite, gibt es eine Richtlinie, die keine Nicht-ASCII-Zeichen in Literalen verwendet, die ich in der Vergangenheit eingeführt habe, da einige externe Tools (Typoskript-Compiler) an solchen Eingaben erstickt sind. In den meisten Fällen funktioniert es gut genug, verbraucht aber manchmal viel Entwicklerzeit, wenn etwas schief geht. Wie auch immer, .empty().append("text")wird besser ausgedrückt als .text("text").
Gleno
1
@ Gleno danke für das Teilen
Alex Parakhnevich

Antworten:

204

Dies ist nur eine Warnung: Ihr Code funktioniert immer noch, wird aber wahrscheinlich in Zukunft nicht mehr funktionieren, da die Methode veraltet ist. Siehe die entsprechende Chromquelle und den entsprechenden Patch .

Dies wurde bereits in jQuery 1.11 erkannt und behoben (siehe hier und hier ).

Paul Mougel
quelle
12
Ich bezweifle, dass dies irgendjemand bald brechen wird, wenn dies bedeutet, dass alle Seiten mit JQuery <1.11 kaputt gehen.
Backpackcoder
26
Diese Warnung wird auch in jQuery 2.0.3 (zuletzt stabil ab diesem Kommentar) angezeigt, und der aktuelle Meilenstein wird für das Update auf 2.1 festgelegt.
counterbeing
Behebt die Verwendung von jQuery 1.11 das Problem?
Krunal
Nur zur Klarstellung ... jQueryist die Verwendung in Ihren Klick-Handlern nicht veraltet return false? Dies ist Chrome, der sich über einen Codeausschnitt in der jQuery-Bibliothek beschwert.
Mpen
2
Tatsächlich. Chrome ist veraltet, event.returnValuewas nur für die Abwärtskompatibilität mit IE
Paul Mougel
22

Nur als Referenz für andere habe ich dies gerade erhalten und festgestellt, dass es daran liegt AngularJS liegt . Es ist für die Abwärtskompatibilität:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
quelle
4
Ich erhalte den Fehler auf einer Bare-Bones-Site, auf der kein Winkel verwendet oder referenziert wird - möglicherweise indirekt referenziert, aber ich bezweifle es.
B. Clay Shannon
1
@ B.ClayShannon: Es ist kein Fehler, es ist eine Warnung. Es gibt einen großen Unterschied, besonders in unserem Kontext. Sie können es sicher ignorieren.
f.ardelian
1
@ B.ClayShannon Wenn Sie es überhaupt einschließen, analysiert Chrome es genauso, als wäre es ein von Ihnen bereitgestelltes Skript, und gibt die Warnung (korrekt) aus.
iCodeSometime
20

Wenn Sie Bootstrap verwenden :

Die aktuelle Version von Bootstrap (3.0.2) (mit jQuery 1.10.2 und Chrome) scheint diese Warnung ebenfalls zu generieren.

(Übrigens auch auf Twitter.)

Aktualisieren

Die aktuelle Version von Bootstrap (3.1.0) scheint diese Warnung nicht mehr zu generieren.

Fähnrich
quelle
19

Das ist Ihr jQuery- API- Problem, nicht Ihr Skript. Es gibt nicht viel zu befürchten.

Victor Zhang
quelle
6

Dies ist eine Warnung im Zusammenhang mit der Tatsache, dass die meisten JavaScript-Frameworks (jQuery, Angular, YUI, Bootstrap ...) Rückwärtsunterstützung für den alten, am meisten gehassten Internet Explorer von IE8 bis IE6 bieten: /

Eines Tages wird die Unterstützung für Abwärtskompatibilität eingestellt (für IE8 / 7/6, da IE9 sich damit befasst ), und Sie werden diese Warnung (und andere IEish-Fehler) nicht mehr sehen.

Es ist eine Frage der Zeit (jetzt hat IE8 einen weltweiten Anteil von 10% , sobald es 1% erreicht hat, ist es TOT ). Ignoriere einfach die Warnung und bleib im Zen :)

numediaweb
quelle
jQuery 2.xx unterstützt nur IE9 und höher. Wenn Sie IE8-Unterstützung in jQuery wünschen, müssen Sie Version 1.xx
Pete
3

Ich habe diese Warnung auf vielen Websites gesehen. Außerdem habe ich gesehen, dass die YUI 3-Bibliothek dieselbe Warnung ausgibt. Es ist eine Warnung, die von der Bibliothek generiert wird (ob es sich um jQuery oder YUI handelt).

eAbi
quelle