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

Сброс статуса посещения по ссылкам

Можно ли использовать reset статус посещения по ссылкам?

Сценарий таков: на сайте интрасети, в котором, естественно, много ссылок, мы хотим, чтобы ссылка имела статус "посещений" только в течение установленного периода времени. Поэтому я ищу способ манипулировать посещенным статусом ссылок.

Это выполнимо? Конечно, это должен быть кросс-браузер.

ETA: Клиентские решения вполне приемлемы. Предпочитаемый даже..: -)

ETA-2: разрешены файлы cookie. Здесь нет запретов: -)

4b9b3361

Ответ 1

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

Клиентский способ привязки reset к незаметному состоянию - это (как-то) очистить историю просмотров. Я был бы очень удивлен, узнав, что есть портативный способ сделать это. У этого также есть неприятные побочные эффекты, такие как искажение поведения чувствительных к истории интеллектуальных локальных баров, таких как Firefox 3.

Как предложил Drew Noakes, серверный способ заключается в добавлении некоторых параметров шумового запроса к ссылкам и периодическом изменении параметра запроса. Это только дает плохое приближение к поведению, которое вы хотите. Чтобы получить "правильное" поведение, вам нужно будет отслеживать историю посещенных страниц на стороне пользователя, поэтому вы можете изменить параметр шума для определенной страницы только после необходимого времени.

Все сказали, что это очень плохая идея, чтобы на самом деле попытаться "reset статус посещения по ссылкам".

Я думаю, что лучшим решением было бы настроить стиль страницы, так что: poped pseudo class делает то же самое, что и псевдо-класс: link. Затем сохраните историю посещенных ссылок на стороне сервера и настройте отображение ссылок с использованием явного класса visited.

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

Ответ 2

Я чувствую что-то вонючее в самой идее.

Какова цель сброса статуса посещения ссылки? чтобы сообщить, что доступны некоторые новые данные? то может быть, что-то более подробное, например, "НОВОЕ" изображение было бы более подходящим?

с другой стороны, если вам действительно нужно это сделать - измените URL

Ответ 3

Итак, вы просто хотите, чтобы "посещенные" ссылки выглядели по-другому в течение определенного времени? Это легко, если вы обойдете псевдоним пользователя :visited и просто назначьте имя пользовательского класса. Использовать файлы cookie; у них есть встроенный срок действия.

Настройте обработчик JavaScript при нажатии на ссылки. Псевдо-код:

function clickHandler(event) {
  var href = /* (figure out which anchor was clicked and get the href) */
  // (you might need to escape the href)

  setCookie(href, "visited", 5); // set cookie for 5 days
}

Он запустит эту функцию прямо перед тем, как перейти к ссылке.

Затем при загрузке страницы вы можете сделать что-то вроде этого:

function markVisitedLinks() {
  var anchors = document.getElementsByTagName("a");

  for (var i = 0; i < anchors.length; i++) {
    if (readCookie(anchors[i].href) == "visited") {
      anchors[i].className += " visited";
    }
  }
}

Возьмите функции setCookie и readCookie из QuirksMode.

Ответ 4

Если простое решение на стороне сервера с "изменением URL", например:

" http://url1?expire2008_10_20", который становится " http://url1?expire2008_10_21" через 24 часа,

не подходит, вы можете использовать следующее:

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

  • сохранить файл cookie сеанса и продолжать посещать данные на сервере.
  • использовать flash-аналог файлов cookie - локальный общий объект

Также поместите код, который рандомизирует URL-адрес для клиента, если истекло время последнего посещения.

Ответ 5

Я считаю, что это свойство браузера и поэтому не контролируется со стороны сервера.

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

Ответ 6

Изменение того, как работают ссылки, обычно путает и/или нарушит ваших пользователей. Это верный способ снизить воспринимаемую удобство использования вашего сайта.

Чего вы действительно пытаетесь достичь?

Если у вас есть подстраницы на вашем сайте, которые меняются (указывая на новый контент), ваши пользователи поймут это. Если у вас есть блестящая новая статья из двух или трех уровней в глубине вашей структуры страницы, добавьте новый раздел со ссылкой на главной странице, если это важно. (Или отправьте уведомление со ссылкой в ​​электронном письме или...)

Ответ 7

Достаточно ли просто форматировать свойство CSS :visited для ссылки, чтобы оно выглядело так, как будто оно никогда не было нажато?

Я не знаю, хотите ли вы отслеживать посещаемые ссылки некоторое время или просто показывать их одинаково все время; если последний, то простой CSS (как показано ниже).

a, a:visited {
     color: blue;
     text-decoration: underline
}

a:hover, a:active {
     color: orange;
}

код >

Ответ 8

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

На ссылочной странице поместите некоторый Javascript, чтобы проверить наличие файла cookie.

Если он не существует, добавьте Javascript в URL с большим количеством случайных чисел (так что история браузера не распознает его.)

Если он существует, добавьте Javascript параметр с тем же значением, что и файл cookie (так что история браузера его распознает.)

Примечания:

  • Я предполагаю, что цель ссылки находится в том же домене, что и ссылочная страница. Если нет, используйте страницу перенаправления в том же домене.

  • Это будет работать только в том случае, если история браузера соответствует продолжительности вашего файла cookie. Если у вас короткая история браузера или нет, клиент не будет отображать ее как посетив.

  • Пожалуйста, не делайте этого! Ваши пользователи хорошо понимают, что означает "посещенный". не сломайте его - вы только смутите их.

  • Вам нужно рассмотреть серверные решения для людей, которые не запускают Javascript?

  • Я не тестировал этот дизайн.

Ответ 9

Поддерживать список URL-адресов, посещенных с помощью метки времени для сеанса пользователей.

Когда страница ссылки загружается

  • скрытые устаревшие URL-адреса
  • ссылки стиля, содержащиеся в списке как витые.

Ответ 10

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

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

Затем вы можете периодически проверять, есть ли ссылки, которые больше не должны быть видимыми, и изменить стиль в нормальном режиме.