507 votes

Problèmes WebKit avec event.layerX et event.layerY

Je viens de remarquer que je reçois des tonnes d'avertissements d'obsolescence dans la dernière version (canary) de Chrome.

event.layerX et event.layerY ne fonctionnent plus et sont dépréciés dans WebKit. Ils seront supprimés du moteur dans un avenir proche.

On dirait que jQuery fait tout foirer.

Je l'utilise : jquery-1.6.1.min.js .

Serait-il utile de passer à la dernière version de jQuery ou n'est-il pas encore corrigé ou s'agit-il d'un bug de Chrome ou d'autre chose ?

PS

Je ne peux pas vous montrer le code parce que je pense que c'est une erreur générale, mais je soupçonne que les avertissements sont lancés lorsque j'essaie d'accéder à un objet jQuery ou lorsque jQuery essaie d'accéder au layerX / layerY (enfin, je suis presque sûr que c'est le cas vu l'erreur :P).

jQuery copie probablement ces propriétés dans l'objet jQuery.

Alors...

Qu'est-ce qui se passe ?

EDITAR

jQuery 1.7 est sorti et corrige ce problème.

Lire la suite sur leur blog, ici .

463voto

Adam A Points 6601

Qu'est-ce qui se passe ?

"jQuery copie probablement ces propriétés dans l'objet jQuery." Vous avez tout à fait raison, donc on dirait que vous le savez déjà ! :)

Espérons que jQuery mettra à jour son code pour ne plus toucher à cela, mais en même temps, WebKit aurait dû savoir mieux que d'enregistrer un avertissement de dépréciation sur un événement (du moins à mon avis). Un seul gestionnaire de déplacement de souris et votre console explose :)

Voici un billet récent sur jQuery : http://bugs.jquery.com/ticket/10531

MISE À JOUR : Ce problème est maintenant corrigé si vous effectuez une mise à jour vers jQuery 1.7.

Veuillez noter que si la mise à niveau de jQuery ne résout pas le problème pour vous, il se peut que cela ait quelque chose à voir avec les extensions / plugins utilisés, comme Jake l'a déclaré dans son réponse .

74voto

David Murdoch Points 28521

http://jsperf.com/removing-event-props/2

La solution temporaire consiste à exécuter ce code avant d'effectuer toute liaison d'événement via jQuery :

(function(){
    // remove layerX and layerY
    var all = $.event.props,
        len = all.length,
        res = [];
    while (len--) {
      var el = all[len];
      if (el != 'layerX' && el != 'layerY') res.push(el);
    }
    $.event.props = res;
}());

UPDATE

Ver el les derniers tests de performance pour savoir quel est le moyen le plus rapide de supprimer les accessoires de l'événement.

28voto

Marcus Ekwall Points 14489

La solution la plus courte à ce problème est la suivante :

$.event.props = $.event.props.join('|').replace('layerX|layerY|', '').split('|');

21voto

törzsmókus Points 559

L'énorme quantité de ces messages (Je viens d'en recevoir 80000 en utilisant gmail) est en effet un bug dans Chrome.

Vous devez mettre en vedette le problème sur Chromium .

14voto

Jake Points 358

Le problème peut également être causé par des extensions Chrome, alors vérifiez-les si la mise à jour de jQuery ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X