当前位置:  开发笔记 > 编程语言 > 正文

重置链接上的访问状态

如何解决《重置链接上的访问状态》经验,为你挑选了3个好方法。

有什么方法可以重置链接上的访问状态吗?

场景是这样的:在自然拥有大量链接的内部网站上,我们希望链接在一段时间内具有"已访问"状态.因此,我正在寻找一种方法来操纵链接的访问状态.

这可行吗?当然应该是跨浏览器.

ETA:客户端解决方案是完全可以接受的.首选甚至...... :-)

ETA-2:允许使用Cookie.这里没有禁止:-)



1> ddaa..:

当浏览器选择应用:visited CSS伪类时,链接显示为"已访问" .

重置链接到未访问状态的客户端方式是(以某种方式)清除浏览历史记录.我会非常惊讶地发现有一种便携式方法可以做到这一点.它还有令人不快的副作用,例如削弱历史敏感的智能位置栏的行为,例如Firefox 3中的那种.

正如Drew Noakes建议的那样,服务器端方法是向链接添加一些噪声查询参数,并定期更改查询参数.这只会给出您想要的行为的不正确的近似值.要获得"正确"行为,您需要跟踪每个用户服务器端访问过的页面的历史记录,因此您只能在必要时间之后更改特定页面的噪声参数.

总而言之,实际上尝试"重置链接上的访问状态"可能是一个坏主意.

我认为更好的解决方案是调整页面样式,以便:visited伪类呈现与:link伪类相同.然后保留每个用户访问过的链接的服务器端历史记录,并使用显式visited类调整链接的显示.

如果您没有方便用户身份,并且不想要求登录,则可以始终使用随机持久性cookie.



2> miceuz..:

我觉得这个想法有点臭.

重置链接访问状态的目的是什么?通知一些新数据可用?也许更像"新"形象的更冗长的形象更合适?

另一方面,如果你真的需要这样做 - 更改URL


这是一个内部网。所有链接将很快被任何一个用户访问。因此,如果不时重置一次,访问状态将失去任何意义。
这就解决了这一切,@ odlando.如果要重置访问状态,请在所需的每个链接的末尾添加一些内容,例如http:// intranet/link#modified-2010-03-17

3> savetheclock..:

所以你只想让"访问"链接在一定时间内看起来不同?如果绕过浏览器的:visited伪类并只分配自定义类名,这很容易.使用cookies; 他们有内置的到期.

单击链接时设置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功能从怪异模式.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有