AJAX-ссылок не обнаружено:посетил


Я замечаю, что стили a:visited не работают со ссылками, которые запрашиваются через JavaScript. Однако при стандартном клике пользователя точно такая же ссылка регистрируется как посещенная, как сразу, так и при последующих обновлениях. Я не уверен, является ли это уникальным для jQuery Mobile (где я впервые столкнулся с ним) или это ограничение браузера, о котором я не знал?

5 4

5 ответов:

Вероятно, вам нужно изменить местоположение.хэш, если вы хотите, чтобы он работал с историей и стилизацией посещенных ссылок.

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

a:visited соответствует любой ссылке, которая указывает на URL-адрес в истории браузера.

Если вы используете AJAX для отмены навигации по URL-адресу, этот URL никогда не появится в истории браузера.

Это можно исправить с помощью ссылок #.

a:visited срабатывает только в том случае, если ссылка "выполнена".

Ссылка на вызов AJAX обычно возвращает 'false' (решение с хэшем (<a href="#">link</a>) все равно возвращает false, иначе пользователь перескочил бы в начало страницы).

Таким образом, ссылка никогда не "выполняется", поэтому не помечается как посещенная.

Хорошо, пожалуйста, не меняйте a элемент href, чтобы указать на хэшированный url, как говорят другие ответчики - это нарушит пользовательский опыт. Если они хотят, чтобы открыть в новом окне, то это будет нужно, чтобы удвоить нагрузку, если вы делаете изменение на стороне сервера это сломает поисковые системы и JS-отключенных пользователей.

Проблема в том, что если вы используете хэши для обновления вашего сайта до RIA (rich internet application), то ссылки будут указывать на mysite.com/page, но вы на самом деле получаете доступ к mysite.com/#/page, поэтому вы на самом деле не посещайте оригинал.

Правильным решением здесь является использование HTML5 History API, который позволяет изменять URL напрямую и подключаться к изменениям URL (поэтому больше нет необходимости в хэшах). Вы можете прочитать больше о плюсах и минусах hashes vs hashbangs vs HTML5 History API здесь: https://github.com/browserstate/history.js/wiki/Intelligent-State-Handling - он также включает в себя пример кода для обновления вашего сайта с помощью HTML5 History API тоже.

JQuery Mobile планируется использовать для HTML5 History API в будущем (он в настоящее время работает), но пока я бы предложил подождать, пока это будет реализовано.

Вы всегда можете установить класс по ссылке с помощью обратного вызова ajax, который разделяет стиль с a: visited.