Ссылки AJAX, не обнаруженные A: Посещенные - PullRequest
4 голосов
/ 12 марта 2011

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

Ответы [ 5 ]

2 голосов
/ 12 марта 2011

Возможно, вам нужно изменить location.hash, если вы хотите, чтобы он работал с стилем истории и посещенных ссылок.

Имейте в виду, что стилизация посещенных ссылок работает несколько непоследовательно между браузерами после просмотра посещенных ссылок на основеУязвимость приватности истории стала популярной на Did You Watch Porn сайте.

2 голосов
/ 12 марта 2011

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

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

Вы можете исправить это, используя # ссылки.

1 голос
/ 13 марта 2011

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

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

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

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

1 голос
/ 12 марта 2011

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

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

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

0 голосов
/ 12 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...