V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
chesha1
V2EX  ›  程序员

大家是怎么标记已读页面的

  •  
  •   chesha1 · 6 天前 · 1614 次点击

    目前应该只有给 a:visited 附加 css 样式这一个好办法,我试了 chrome 拓展 Stylus这个油猴脚本,都能部分解决问题

    但是这两个工具很依赖网站的原链接不变,比如说在本站,一个链接内容有更新之后,url 尾巴留下的记录也会变化,比如从

    https://www.v2ex.com/t/123456#reply10
    

    变成

    https://www.v2ex.com/t/123456#reply11
    

    就无法被 visited 记录了,大家有什么好的解决方法吗

    4 条回复    2025-01-12 17:55:14 +08:00
    StevenRCE0
        1
    StevenRCE0  
       6 天前   ❤️ 1
    这个油猴插件代码很简洁,在这里面自定义匹配逻辑应该就可以了:

    ```javascript
    function updateLinkStatus(link) {
    if (visitedLinks.has(link.href)) {
    link.style.color = '#88C6E5';
    } else {
    link.addEventListener('click', () => {
    visitedLinks.add(link.href);
    GM_setValue('visitedLinks', Array.from(visitedLinks));
    link.style.color = '#88C6E5';
    });
    }
    }
    ```
    NoOneNoBody
        2
    NoOneNoBody  
       6 天前   ❤️ 1
    不是“只有”,方法很多的,只不过你说的这个比较简单,基于浏览器自身的 history 数据库

    如果自己写脚本需要处理好获取 visited 的问题,就是需要一个历史库才能比较
    至于你说的同一页 url 不同,用正则处理一下就行了

    更复杂还有
    https://example.com/?abc=1&xyz=2...
    https://example.com/?xyz=2&abc=1...
    这些参数都一样,是同一页,但 url 不同

    就是看你的需求怎样,越复杂越难写,例如我的需求是跨浏览器的访问记录,就需要自建数据库了
    zzznow
        3
    zzznow  
       6 天前   ❤️ 1
    function updateLinkStatus(link) {
    // 获取链接的 href 属性,并移除#及其后面的内容
    const cleanHref = link.href.split('#')[0];

    if (visitedLinks.has(cleanHref)) {
    link.style.color = '#88C6E5';
    } else {
    link.addEventListener('click', () => {
    visitedLinks.add(cleanHref);
    GM_setValue('visitedLinks', Array.from(visitedLinks));
    link.style.color = '#88C6E5';
    });
    }
    }
    函数替换一下就 ok...
    importmeta
        4
    importmeta  
       5 天前
    让 AI 写油猴脚本, 取 123456 这一部分存到本地存储里, LocalStorage 或者 IndexedDB, 进来油猴脚本判断 URL 是否是包含这部分, 包含就加点样式.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 939ms · UTC 07:57 · PVG 15:57 · LAX 23:57 · JFK 02:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.