【问题标题】:Jquery: mark links as visited without opening them?Jquery:将链接标记为已访问而不打开它们?
【发布时间】:2010-12-29 16:05:43
【问题描述】:

我无意更改链接(我听说这是不可能的,但如果不是,我很想知道如何)。如果需要,我可以将其添加到浏览器历史记录中。

我想遍历页面上的所有<a> 并将它们的状态更改为已访问。例如:

$("a").each(function(){
   //mark as visited (somehow?)
});

基本上是在我的页面上创建一个“全部标记为已读”按钮。 有什么想法吗?

【问题讨论】:

  • 您是否希望您的链接出现在用户浏览器的自动建议下拉菜单中而不实际访问它们?你只想要视觉效果吗?告诉我们结果应该是什么,已经有很多很好的答案,但你知道,我们不知道哪个真正回答了这个问题!
  • 我正在创建一个 chrome 扩展程序,它是一个 rss 阅读器。我通过计算页面上的链接来计算已读文章与未读文章。因此,要将所有内容标记为已读,我必须以某种方式将它们添加到历史记录中。哦,好吧...我可能不得不以某种方式将数据存储在 localStorage 中。

标签: jquery loops hyperlink browser-history visited


【解决方案1】:

你可以...

1) 尝试使用 AJAX(即 $.get(a.href)),但我不知道这是否真的有效。

2) 尝试将链接设置为看起来已访问的样式(通过更改其 CSS“颜色”属性),尽管这种方法实际上不会使它们进入已访问的链接

3) 如果这些都不起作用,您可以尝试执行以下操作:

3A) 在页面上创建隐藏的 IFRAME

3B) 为页面上的每个A标签添加一个target属性,使其指向隐藏的IFRAME

3C) 在每个循环中调用 $("a").click() (可能在每个循环之间有某种延迟,以使页面有时间加载)

如果这些都不起作用,我认为你不走运。

【讨论】:

  • 我在考虑 $.get 或 $.load 我认为添加到历史记录中 - 但这已经修复了......我想。不幸的是,我希望真正改变状态而不仅仅是风格。我环顾四周,没有找到添加浏览器历史记录的方法……尽管很多人都希望这种情况发生。看起来隐藏的 iFrame 是要走的路。谢谢
【解决方案2】:

这实际上不可能以您想要的方式进行,但是您可以将 a:visited 的 CSS 属性复制到一个名为“visited”的新类中,或者将它们应用于您想要的链接。

$('a').addClass('visited');

【讨论】:

    【解决方案3】:

    创建一个被访问的链接(即将其href 设置为window.location),并将每个目标链接的样式设置为新创建的链接的计算样式。

    【讨论】:

    • +1 因为这是我在 Google 找到这个问题时一直在寻找的答案
    猜你喜欢
    • 2010-10-22
    • 2018-12-11
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多