javascript 페이지 링크의 방문 상태 재설정 중




팝업 타이틀 바꾸기 (8)

브라우저가 :visited CSS 가상 클래스 를 적용 할 때 링크가 "방문한"것으로 나타납니다.

방문하지 않은 상태로 링크를 재설정하는 클라이언트 쪽 방법은 탐색 기록을 지우는 것입니다. 나는 그걸 할 수있는 이식 가능한 방법이 있다는 것을 알고 놀랄 것입니다. 또한 파이어 폭스 3와 같이 역사에 민감한 스마트 위치 표시 줄의 동작을 손상시키는 것과 같은 불쾌한 부작용이 있습니다.

Drew Noakes가 제안했듯이 서버 쪽 방법은 링크에 노이즈 쿼리 매개 변수를 추가하고 쿼리 매개 변수를 주기적으로 변경하는 것입니다. 이것은 단지 당신이 원하는 행동의 나쁜 근사치를 제공합니다. "올바른"동작을 얻으려면 사용자 서버 쪽에서 방문한 페이지의 기록을 추적해야하므로 필요한 시간 후에 만 ​​특정 페이지의 노이즈 매개 변수를 변경할 수 있습니다.

모두가 말했듯이, 실제로 "링크의 방문 상태 재설정"을 시도하는 것은 좋지 않은 생각입니다.

더 나은 해결책은 페이지 스타일을 조정하여 : : pseudo 클래스가 : link 의사 클래스와 동일하게 렌더링되도록하는 것입니다. 그런 다음 사용자별로 방문한 링크의 서버 측 기록을 유지하고 명시 적으로 visited 클래스를 사용하여 링크 표시를 조정하십시오.

사용자 ID를 편리하게 사용하지 않고 로그인을 요구하지 않으려면 항상 임의의 영구 쿠키를 사용할 수 있습니다.

링크에서 방문 상태를 재설정 할 수있는 방법이 있습니까?

시나리오는 다음과 같습니다. 자연스럽게 많은 링크가있는 인트라넷 사이트에서는 설정된 기간 동안 만 "방문"상태의 링크를 원합니다. 따라서 링크의 방문 상태를 조작하는 방법을 찾고 있습니다.

이게 가능합니까? 물론 크로스 브라우저 여야합니다.

고객 측 솔루션은 완벽하게 수용 가능합니다. 선호도 : ..-)

ETA-2 : 쿠키 허용. 여기에서 금지 된 내용이 없습니다.


클릭 한 적이없는 것처럼 보이도록 링크의 :visited CSS 속성을 포맷하는 것만으로 충분합니까?

나는 잠시 동안 방문한 링크를 추적하고 싶거나 그 (것)들을 항상 똑같이 표시하고 싶은지 모른다; 후자의 경우 간단한 CSS (아래)가 도움이됩니다.

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

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


문제가 순수하게 시각화되면 방문 링크를 방문하지 않은 상태로 표시하는 것에 대해 걱정할 필요가 없습니다.

링크 스타일을 변경하는 onclick 핸들러를 방문한 상태와 유사하게 링크에 추가하십시오. 이 처리기에서 예를 들어하실 수 있습니다. 링크 상태를 쿠키에 기록하십시오.

그러면 더 이상 보이지 않아야하는 링크가 있는지 정기적으로 확인하고 스타일을 정상으로 되돌릴 수 있습니다.


링크가 작동하는 방식을 변경하면 일반적으로 사용자를 혼란스럽게하거나 화나게 할 수 있습니다. 사이트의 유용성 을 낮추는 확실한 방법입니다.

당신은 정말로 무엇을 성취하려고합니까?

귀하의 사이트에서 서브 페이지가 변경되면 (새 컨텐츠를 가리킴) 사용자 가이를 파악할 수 있습니다. 페이지 구조의 2 ~ 3 단계에서 반짝이는 새 기사를 얻은 경우 주요 페이지에 링크가있는 새로운 섹션을 추가하십시오. (또는 이메일에 링크가있는 통지를 보내거나 ...)


따라서 특정 시간 동안 "방문한"링크가 다르게 보이게하고 싶습니까? 이것은 browser :visited pseudoclass를 무시하고 커스텀 클래스 이름을 할당하는 것만으로도 쉽습니다. 쿠키 사용; 그들은 만료가 내장되어 있습니다.

링크를 클릭 할 때 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";
    }
  }
}

QuirksMode에서 setCookie 및 readCookie 함수를 가져옵니다.


나는 그 아이디어에서 냄새 나는 것을 느낍니다.

링크 방문 상태를 재설정하는 목적은 무엇입니까? 새로운 데이터가 있음을 알려주 는가? 그러면 "NEW"이미지와 같이 좀 더 자세한 정보가 더 적절할 수 있습니까?

당신이 정말로 이것을 해야하는 경우 다른 한편으로는 - URL을 변경하십시오


나는 이것이 브라우저의 속성이라고 믿으며 서버 측에서 제어 할 수 없다.

하나의 '해킹'은 링크의 끝에 미사용 쿼리 문자열을 추가하고 주기적으로 회전시키는 것일 수 있습니다. 이것은 특정 클라이언트에 대한 'visited'상태의 길이가 쿼리 문자열이 고정 된 시간이 아닌 회전하는시기에 달려 있음을 의미합니다.


사용자 세션에 대한 타임 스탬프로 방문한 URL 목록을 유지 관리합니다.

링크 페이지가로드 될 때

  • 부실 URL을 플러시
  • 스타일 링크는 목록에 visted로 포함되어 있습니다.






client-side