Могу ли я использовать псевдокласс CSS :visited для ссылок с подстановочными знаками?

Допустим, у меня есть сайт с несколькими ссылками следующим образом:

www.example.com/product/1
www.example.com/product/2
www.example.com/product/3

Я также время от времени добавляю информацию об отслеживании к ссылкам, чтобы видеть, как используется мой сайт, например, если кто-то посещает страницу продуктов из браузера продуктов, я бы установил параметр ref:

www.example.com/product/1&ref=pb
www.example.com/product/2&ref=pb
www.example.com/product/3&ref=pb

Проблема в том, что если пользователь посещает ссылку первого типа, а затем просматривает ссылку второго типа, то псевдокласс :visited, по-видимому, не применяется, потому что браузер, похоже, соответствует только точным URL-адресам. Есть ли способ применить «подстановочные знаки» к ссылкам в этом смысле, чтобы, когда пользователь видит ссылку первого или второго типа, она выделялась?

Примечание. Я не могу изменить эту «ссылочную» архитектуру; это наследуется.


person rabidpebble    schedule 21.03.2010    source источник


Ответы (3)


Возможно, вы сможете сделать это с помощью javascript. Вы можете закодировать свои ссылки следующим образом

<a href="www.example.com/product/1" onclick="document.location.href='www.example.com/product/1&ref=ab';return false;">

Для всех, у кого включен javascript, вы увидите посещение www.example.com/product/1&ref=ab, и их браузер обнаружит все ссылки с href=www.example.com/product/1 как одну и ту же ссылку. И стилизуйте их соответствующим образом в соответствии с псевдоклассом :Visited. Единственным недостатком является то, что вы не получите справочную информацию для тех, у кого нет Javascript. Является ли это приемлемым компромиссом, зависит от ваших требований.

Вы также можете сделать что-то вроде:

<a href="www.example.com/product/1" onclick="document.location.href=this.href + '&ref=ab';return false;">

так что вам не нужно кодировать URL-адрес дважды. Вероятно, вы могли бы даже создать функцию, возвращающую правильную ссылку, извлекая значение ссылки из одного места.

person Kibbee    schedule 21.03.2010
comment
Просто напоминание: '&' в параметрах HTML всегда следует экранировать. Подойдет экранирование сущности &amp; или экранирование строки JS \x26. В то время как современные браузеры часто способны исправлять tag-soup на лету, в случае с XHTML подобная проблема может привести к тому, что вся страница будет отображаться как сообщение об ошибке XML. - person Edurne Pascual; 21.03.2010

Я почти уверен, что ответ «нет».

person clee    schedule 21.03.2010

Если URL-адрес отличается даже на один символ, это не один и тот же URL-адрес. Итак... нет.

person Robusto    schedule 21.03.2010