Avertissement FireFox "Pseudo-classe inconnue ou pseudo-élément 'caché'" continue de fonctionner encore et encore

J'ai récemment découvert un avertissement sur Firefox qui dit

Avertissement: pseudo-classe inconnu ou pseudo-élément 'caché'

Voici la page http://eleven23.net/eleven23/beta/work/web/lounge22.php

Et l'avertissement se produit quand il arrive à la partie de javascript qui a img: caché

$ ('Img: hidden'). Eq (0) .fadeIn (500); // s'efface dans les images cachées un par un i ++; // ajouter 1 au compte

Je me demande si quelqu'un a une idée sur la façon de résoudre cet avertissement.

Merci!

La première étape consiste à arrêter réellement l'appel répété de doThis() via setInterval qui, en ce moment, ne se produit pas. Ainsi, l'avertissement apparaît toutes les 500 ms.

Changement

 $(document).ready (function() { var int = setInterval("doThis(i)",500); }); 

à

 $(document).ready (function() { int = setInterval("doThis(i)",500); }); 

Sinon, votre appel à clearInterval(int) ne fera rien puisque vous avez déclaré var int deux fois et essayez d'effacer l'int "externe" qui n'est pas l'intervalle.

Après ce correctif, seul 4-5 de cet avertissement devrait rester dans votre console.


Maintenant à votre erreur. Il n'y a pas beaucoup que vous pouvez faire pour empêcher cette erreur d'apparaître exactement que plusieurs fois vous appelez doThis() .

JQuery utilise Sizzle en interne comme moteur de sélection. Et dans certains cas, Sizzle essaie d'utiliser (sur les navigateurs pris en charge) la fonction querySelectorAll() pour trouver les éléments correspondant à votre sélecteur.

Maintenant, AFAIK est hidden pas un sélecteur CSS valide, bien que Firefox supporte l'appel à querySelectorAll() il échoue correctement après avoir rencontré un sélecteur inconnu. JQuery saisit l'erreur, puis la sélection de l' image:hidden elle-même.

Si vous ne voulez pas voir cette erreur du tout, vous pouvez utiliser une autre syntaxe jQuery qui, dans ce cas, empêcherait Sizzle de tenter d'utiliser querySelectorAll() .

Changement

 $('img:hidden').eq(0).fadeIn(500); 

à

 $('img:hidden', $('div#content_wrapper')).eq(0).fadeIn(500); 

Mais je ne vous conseille pas de le faire car cela ne vous permet pas seulement de conserver seulement 4 à 5 avertissements dans votre console.

Malheureusement, c'est un bug dans JQuery lui-même. Voir: http://docs.jquery.com/Selectors/hidden

Vérifiez firebug, même sur leur page d'exemple, vous obtenez ce même avertissement. Il se réfère à une pseudo-classe CSS non existante: cachée. Où vous utilisez $('img:hidden')