Подтвердить что ты не робот

Почему это не так: побывал в стиле 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 на ссылку не повлияло на нее.

Изменить: изменение цвета работает, а не шрифт.

Изменить: обходным путем было изменение доступности для игнорирования веб-цветов. У меня нет доступа к источнику, поэтому я должен был сделать это таким образом.

4b9b3361

Ответ 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;
}