Почему это не так: побывал в стиле css?
Есть ли причина, почему это не работает в Internet Explorer или Chrome:
<html>
<head>
<style>
A {font-weight: bold; color:black;}
A:visited {font-weight: normal; color: black; }
.Empty {font-weight: bold; color: black; }
</style>
</head>
<body>
<a href="#" onclick="location.href='http://mysite'; return false;">click me</a>
</body>
</html>
Ссылка, на которую я нажимаю, никогда не переходит в нормальное состояние и остается жирным. В некоторых других браузерах он работает.
Изменить: изменение case не повлияло на него.
Изменить: изменение a на ссылку не повлияло на нее.
Изменить: изменение цвета работает, а не шрифт.
Изменить: обходным путем было изменение доступности для игнорирования веб-цветов. У меня нет доступа к источнику, поэтому я должен был сделать это таким образом.
Ответы
Ответ 1
Собственно, это не имеет никакого отношения к чувствительности к регистру. Это функция безопасности. Функциональность псевдослова :visited
была ограничена во многих современных браузерах (Fx4, IE9, Chrome), чтобы предотвратить эксплойт CSS: читайте об этом здесь.
В настоящее время getComputedStyle()
в этих браузерах обычно возвращает значения для посещенных ссылок, как если бы они не были посещены. Однако я могу просто представить себе обход этого: используя font-weight
для посещенных ссылок, ширина элемента изменяется, поэтому браузеры, которые позволят изменять ссылки font-weight
для :visited
, фактически не будут исправлять дыру в безопасности.
Таким образом, для этой проблемы нет обходного пути.
Ответ 2
Сам CSS не чувствителен к регистру, но если HTML файл с использованием этого стиля имеет объявление XML и доктрину XHTML, этот CSS не будет работать, потому что теги чувствительны к регистру. Вам нужно будет установить теги "a" в нижнем регистре.
Разъяснение здесь:
http://reference.sitepoint.com/css/casesensitivity
Ответ 3
Возможно, попробуйте изменить атрибут цвета и посмотреть, имеет ли это эффект вообще.
Для устранения неполадок вы можете попытаться использовать инструменты разработчика в хроме, чтобы узнать, какой стиль применяется.
Ответ 4
У вас должны быть отдельные объявления для: link, a: visited, a: active и т.д.
Удалите свой первый стиль, который не содержит двоеточие. Это переопределение. Замените ссылку:.
Ответ 5
Я исправил эту проблему для своего сайта, сохранив ссылки в файл cookie или сеанс, а затем вручную добавив посещенный класс в мою php-навигацию script. Просто создайте массив uri следующим образом:
//Script that loads on every page to save visited pages
$_COOKIE['uris'] = array ('uri/page1', 'uri/page2', 'uri/page3');
//The below script must reside on every navigation script
$uris = $_COOKIE['uris'];
if(in_array($link['uri'], $uris) {
echo '<a class="visited" href="'.$link['uri'].'">'.$link['name'].'</a>';
} else {
echo '<a href="'.$link['uri'].'">'.$link['name'].'</a>';
}
Ответ 6
Проблема связана с обнюхиванием истории, изменение свойств css отключено для посещенных ссылок из-за проблем с конфиденциальностью.
Я придумал следующее обходное решение, чтобы достичь желаемого эффекта.
Можно изменить фоновый цвет посещенной ссылки.
Решение очень просто:
- установите фоновое изображение на ссылку с той же высотой, что и ваша ссылка
и шириной 1px и повторяйте изображение по горизонтали.
- изображение имеет тот же цвет, что и фон ссылки
- сделать один пиксель этого изображения прозрачным, в вертикальной середине
- on: visit state просто измените цвет фона этой ссылки на текстовый цвет ссылки.
- Только одна строка фонового цвета будет видна, потому что фоновое изображение маскирует ее.
Вот пример:
a:link {
color:#000;
background:#FFF url('../img/linethrough.png') repeat-x top left;
}
a:visited {
background-color:#000;
color:#000;
}