используя JavaScript, чтобы пометить ссылку как посещенную

FF2 (по крайней мере) не помечается как ссылка как: посещенный, если он запускает обработчик onclick без следования href. Я использую onclick для извлечения данных с сервера и изменения страницы, и стиль ссылок здесь уместен. Но ссылка не помечена как посещенная.

Существует ли кросс-браузерный способ пометить ссылку как посещенную? Если это не удастся, есть ли способ определить стиль браузера a :ited и применить его к ссылке?

Спасибо всем, кто ответил.

Похоже, ответы :

  • Существует ли кросс-браузерный способ пометить ссылку как посещенную?
    Нет, это невозможно сделать. Ссылки определяются как посещенные, если href находится в истории браузера.   
  • Есть ли способ определить стиль браузера: посещенный?
    Нет, не только через JavaScript.
12 голосов | спросил dougfelt 28 AMpTue, 28 Apr 2009 03:12:58 +040012Tuesday 2009, 03:12:58

5 ответов


0

Вот как я это сделал. Работает только в браузерах , которые поддерживают API истории HTML5.

# store the current URL
current_url = window.location.href

# use replaceState to push a new entry into the browser's history
history.replaceState({},"",desired_url)

# use replaceState again to reset the URL
history.replaceState({},"",current_url)

Использование replaceState означает, что кнопка назад не будет затронута.

ответил Nathan Manousos 2 AMpMon, 02 Apr 2012 07:40:07 +040040Monday 2012, 07:40:07
0

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

Скажем, ваши посещенные ссылки выделены красным цветом:

<a href="#" onclick="someEvent();this.style.color='#ff0000'">link</a>

Но это не значит, что при перезагрузке страницы ссылки по-прежнему помечаются как посещенные.

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

Самым простым будет список через запятую, который вы можете split() перед прочтением. Что вы делаете, когда страница перезагружается. Когда он разделен, вы перебираете все идентификаторы и устанавливаете цвет ссылок.

Например, используя jQuery:

// onclick
function saveID(id) {
  if ($.cookie('idCookie')) {
    $.cookie('idCookie', $.cookie('idCookie') + "," + id);
  } else {
    $.cookie('idCookie', id);
  }
}

// make all links colored
function setVisted() {
  var idArray = $.cookie('idCookie').split(',');
  for (var x=0; x<idArray.length; x++) {
    $('#' + idArray[x]).css('color', '#ff0000');
  }
}

// assign saveID()
$(document).ready(function(){
  $('a').click(function(){
    saveId($(this).attr('id'));
  });
  setVisited();
});

Я не тестировал этот код, но он должен помочь вам начать и дать вам представление. Если вам повезет, это вставить и выиграть . ;-) Я также не исследовал, сколько вы можете сохранить в cookie-файлах и как это влияет на производительность, или какие другие ограничения применяются, также смотрите мои комментарии.

ответил Till 28 AMpTue, 28 Apr 2009 04:16:46 +040016Tuesday 2009, 04:16:46
0

Примените класс, который имеет такое же определение, как и "посещенный".

ответил Jordan S. Jones 28 AMpTue, 28 Apr 2009 03:18:25 +040018Tuesday 2009, 03:18:25
0

Строго говоря, для отдельных ссылок не существует такого понятия, как «посещенное» состояние. Сами URL-адреса интерпретируются браузером как «посещенные». Любые ссылки, которые указывают на URL в истории браузера, получат стилизацию, определенную псевдостилем: visit в вашем CSS.

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

Что касается второй части вашего вопроса, я бы, вероятно, согласился с ответом Джордана Джонса.

ответил Peter Bailey 28 AMpTue, 28 Apr 2009 03:19:07 +040019Tuesday 2009, 03:19:07
0

Есть ли способ определить стили браузера: посещенный?

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

alert(mys_getLinkColor(top.location))


function mys_getLinkColor(href) {
var x, body, res=''
x = document.createElement('a')
x.href = href
body = document.getElementsByTagName('body')[0]
body.appendChild(x)
if(x.currentStyle) {
   res = x.currentStyle.color
}
else if(window.getComputedStyle) {
   res = window.getComputedStyle(x,null).color
}
return mys_rgbToHexColor(res) }


function mys_rgbToHexColor(v) { 
// E.g. 'rgb(5,2,11)' converts to "#05020b". All other formats returned unchanged.
var i
v = v.split('(')
if(!v[1]) return v[0]
v = v[1].replace(/ /g, '').replace(/\)/, '')
v = v.split(',')
for(i=0; i<v.length; i++) {
   v[i] = Number(v[i]).toString(16)
   if(v[i].length==1) v[i] = '0' + v[i]
}
return '#'+v.join('')}
ответил 9 J0000006Europe/Moscow 2009, 20:51:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132