2013-04-23 22 views
6

Próbowałem dodać niektóre efekty do odwiedzanych linków, wtedy dostałem ten problem.Nie można zmienić zawartości odwiedzanych: przed pseudoelementami

Oto kod: http://dabblet.com/gist/5447894

Tylko Opera może skutecznie zmienić zawartość :before pseudo-elementów. Wszystkie inne przeglądarki zawierują się. Czy coś ominąłem? Dzięki

+1

możliwy duplikat [Firefox 4 nie renderujący: odwiedzony :: poprzednio (z wyjątkiem koloru)] (http://stackoverflow.com/questions/5839127/firefox-4-not-rendering-avisitedbefore-except-color) – bookcasey

Odpowiedz

9

Dozwolony (= nie ignorowane) właściwości CSS z odwiedzonych linków są color, background-color, border-*-color, outline-color i więcej, column-rule-color (w pewnych okolicznościach).

Ma to zapobiec kradzieży ataków z historii. Aby uzyskać więcej informacji, patrz this article.

Możesz więc technicznie ustawić pseudo-klasę :before dla linków :visited, ale zostanie ona zignorowana i będzie wyglądać, jakby linki nie były odwiedzane. To nie jest błąd, ale funkcja;)

+0

Dziękuję, jestem zaskoczony, że Opera może sprawić, że to zadziała :) – Peiwen

+1

Oznacza to, że opera ma brak bezpieczeństwa! –

2

Istnieje bardzo ograniczony zakres możliwości stylizowania łączy :visited w nowoczesnych przeglądarkach ze względu na prywatność - dzięki temu nie można było wykryć, które strony odwiedził wcześniej użytkownik, sprawdzając obliczony styl za pomocą javascript.

Dozwolone właściwości do układania na :visited linki jest

  • color
  • background-color
  • border-color (i podgrup Właściwości)
  • outline-color
  • Części Kolor wypełnienia i udaru właściwości

Mimo to nie można uzyskać wartości wyliczonego stylu dla odwiedzanych łączy za pośrednictwem javascript.

Możesz przeczytać więcej na ten temat here.

+0

Dziękuję za wyjaśnienia :) – Peiwen