event.returnValue est obsolète. Veuillez utiliser à la place le fichier standard event.preventDefault ()

222

J'ai ce 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>

Je reçois l'erreur suivante dans ma console Google Chrome:

event.returnValue est obsolète. Veuillez utiliser à la place le fichier standard event.preventDefault ().

J'utilise jQuery v1.10.2 et #changeResumeStatusest un <span>.

Quel est le problème avec mon script?

Alex Parakhnevich
la source
19
Je pense que ce n'est pas une erreur, mais simplement un avertissement - celui-ci peut être ignoré en toute sécurité.
Qantas 94 Heavy
32
Cet avertissement fait suite à la dernière mise à jour de Chrome, ne vous inquiétez pas
A. Wolff
2
Vous devriez chercher à échapper les chaînes non ascii.
Gleno
4
@AlexParakhnevich Il n'y a pas de raison impérieuse unique de le faire, mais quelques-unes mineures qui remontent de temps en temps. Pour être honnête, ma réaction a été instinctive plutôt que mûrement réfléchie. Dans les projets sur lesquels je travaille en ce moment, il existe une directive pour ne pas utiliser de caractères non-ascii dans les littéraux, que j'ai institués dans le passé, car certains outils externes (compilateur typographique) s'étouffent avec une telle entrée. Cela fonctionne assez bien dans la plupart des cas, mais consomme parfois beaucoup de temps de développeur lorsque les choses tournent mal. Quoi qu'il en soit, .empty().append("text")est mieux exprimé comme .text("text").
Gleno
1
@Gleno merci pour le partage
Alex Parakhnevich

Réponses:

204

Ce n'est qu'un avertissement: votre code fonctionne toujours, mais ne fonctionnera probablement pas à l'avenir car la méthode est obsolète. Voir la source pertinente de chrome et le patch correspondant .

Cela a déjà été reconnu et corrigé dans jQuery 1.11 (voir ici et ici ).

Paul Mougel
la source
12
Je doute que quiconque rompe cela de sitôt si cela signifie que toutes les pages utilisant JQuery <1.11 se cassent.
Backpackcoder
26
Cet avertissement apparaît également avec jQuery 2.0.3 (la plus récente stable à partir de ce commentaire), et le jalon actuel est défini sur 2.1, pour le correctif.
contre-être
L'utilisation de jQuery 1.11 résoudra-t-elle le problème?
Krunal
Juste pour clarifier ... jQueryn'a pas déprécié l'utilisation return falsedans vos gestionnaires de clics? Est-ce que Chrome se plaint d'un extrait de code trouvé dans la bibliothèque jQuery?
mpen
2
En effet. Chrome est obsolète, event.returnValuece qui n'existait que pour une compatibilité descendante avec IE
Paul Mougel
22

Juste pour la référence des autres, je viens de recevoir cela et j'ai trouvé que c'était dû à AngularJS . C'est pour la compatibilité descendante:

if (!event.preventDefault) {
    event.preventDefault = function() {
        event.returnValue = false; //ie
    };
}
Ledivin
la source
4
J'obtiens l'erreur dans un site à ossature nue sans angulaire utilisé ou référencé - éventuellement référencé indirectement, mais j'en doute.
B. Clay Shannon
1
@ B.ClayShannon: Ce n'est pas une erreur, c'est un avertissement. Il y a une grande différence, surtout dans notre contexte. Vous pouvez l'ignorer en toute sécurité.
f.ardelian
1
@ B.ClayShannon Si vous l'incluez, Chrome l'analysera exactement de la même manière que s'il s'agissait d'un script que vous avez fourni et lançera (correctement) l'avertissement.
iCodeSometime
20

Si vous utilisez Bootstrap :

La version actuelle de Bootstrap (3.0.2) (avec jQuery 1.10.2 et Chrome) semble également générer cet avertissement.

(Il le fait aussi sur Twitter, BTW.)

Mettre à jour

La version actuelle de Bootstrap (3.1.0) ne semble plus générer cet avertissement.

enseigne
la source
19

C'est votre problème d' API jQuery , pas votre script. Il n'y a pas grand-chose à craindre.

Victor Zhang
la source
6

Il s'agit d'un avertissement lié au fait que la plupart des frameworks JavaScript (jQuery, Angular, YUI, Bootstrap ...) offrent une prise en charge en arrière pour Internet Explorer le plus méchant le plus détesté à partir d'IE8 jusqu'à IE6: /

Un jour, la prise en charge de la compatibilité descendante sera supprimée (pour IE8 / 7/6 car IE9 le gère ), et vous ne verrez plus cet avertissement (et d'autres bogues IEish).

C'est une question de temps (maintenant IE8 a une part mondiale de 10% , une fois qu'il atteint 1%, il est MORT ), en attendant, ignorez simplement l'avertissement et restez zen :)

numediaweb
la source
jQuery 2.xx prend uniquement en charge IE9 et versions ultérieures. Si vous voulez la prise en charge d'IE8 dans jQuery, vous devez utiliser la version 1.xx
Pete
3

J'ai vu cet avertissement sur de nombreux sites Web. De plus, j'ai vu que la bibliothèque YUI 3 donne également le même avertissement. C'est un avertissement généré à partir de la bibliothèque (que ce soit jQuery ou YUI).

eAbi
la source