Предупреждение FireFox «Неизвестный псевдокласс или псевдоэлемент« скрытый »» работает снова и снова - PullRequest
4 голосов
/ 03 декабря 2009

Я недавно обнаружил предупреждение, происходящее в Firefox, которое говорит:

Предупреждение: Неизвестный псевдокласс или псевдоэлемент 'hidden'

Вот страница http://eleven23.net/eleven23/beta/work/web/lounge22.php

И предупреждение появляется, когда оно попадает в ту часть JavaScript, в которой есть img: hidden

$ ('img: hidden'). Eq (0) .fadeIn (500); // исчезает в скрытых изображениях одно за другим i ++; // добавляем 1 к счету

Так что мне интересно, есть ли у кого-нибудь идея, как решить это предупреждение.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 декабря 2009

Первый шаг - действительно остановить повторный вызов doThis() через setInterval, чего в данный момент не происходит. Таким образом, предупреждение появляется каждые 500 мс.

Изменение

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

до

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

В противном случае ваш вызов clearInterval(int) ничего не сделает, как вы дважды объявили var int, и попытайтесь очистить "external" int, который не является интервалом.

После этого исправления в консоли должно оставаться только 4-5 этого предупреждения.


Теперь к вашей ошибке. Вы не можете ничего сделать, чтобы эта ошибка не появлялась столько раз, сколько вы звоните doThis().

jQuery использует Sizzle внутри как механизм выбора. А в некоторых случаях Sizzle пытается использовать (в поддерживаемых браузерах) функцию querySelectorAll(), чтобы найти элементы, соответствующие вашему селектору.

Теперь AFAIK hidden не является допустимым селектором CSS, поэтому, хотя Firefox поддерживает вызов querySelectorAll(), он корректно завершается ошибкой после обнаружения неизвестного селектора. jQuery ловит ошибку, а затем сам выбирает image:hidden.

Если вы вообще не хотите видеть эту ошибку, вы можете использовать другой синтаксис jQuery, который в этом случае не позволит Sizzle попытаться использовать querySelectorAll().

Изменение

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

до

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

Но я не советую вам делать это, потому что на самом деле это не дает вам намного меньше только 4-5 предупреждений в вашей консоли.

0 голосов
/ 03 декабря 2009

К сожалению, это ошибка в самом JQuery. Смотри: http://docs.jquery.com/Selectors/hidden

Проверьте firebug, даже на их странице примера вы получите то же самое предупреждение. Он ссылается на несуществующий псевдокласс CSS: скрытый. Где вы используете $('img:hidden')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...