Skip to content

新增 [标记仅自己可见的评论] 功能#600

Open
sakaiyuuji4 wants to merge 1 commit into
XIU2:masterfrom
sakaiyuuji4:master
Open

新增 [标记仅自己可见的评论] 功能#600
sakaiyuuji4 wants to merge 1 commit into
XIU2:masterfrom
sakaiyuuji4:master

Conversation

@sakaiyuuji4

Copy link
Copy Markdown

功能改动

  1. 菜单新增开关 标记仅自己可见的评论(默认开启)。
  2. 拦截 /api/v4/comment* 的 fetch / XHR 响应,递归读取 is_visible_only_to_myself 字段。
  3. 通过「作者名 + 评论文字」签名匹配 DOM 中渲染出的评论。
  4. 命中后,在评论下方的时间、省份后面、操作按钮之前插入橙色 仅自己可见 徽章,不改动评论原本样式。

评测结果

对加载速度的影响:几乎没有

  • markOnlyVisibleToMyself() 在 start() 里只执行一次,做的事就是:注入一小段 <style>、装好 fetch/XHR 钩子、注册 1 个
    MutationObserver、初次 rescan 一次,没有任何同步的重活。
  • 不会拖慢网络:fetch 包装器立即把原始 Promise 原样返回,resp.clone().text()
    是在另一条分离的异步链里处理,不会阻塞页面自己接收响应。
  • 钩子只针对 URL 含 /api/v4/comment 的请求;其他请求只多一次 indexOf 字符串判断就放行。

持续开销:小,但“不为零”(唯一需要注意的点

  1. 多了一个全文档监听器
    observer.observe(document, {childList:true, subtree:true}) 在所有页面常驻,刷信息流时每次插入都会触发回调。
    → 但这个脚本本身就已经在跑 6~10 个同类的全文档监听器(blockKeywords/blockUsers/blockType/closeFloatingComments
    等),我加的这个跟它们完全同类,不是新增的瓶颈。
  2. 每个头像插入会有一点点空转
    回调会找 people/...>img.Avatar,但头像在评论之外(信息流作者、悬浮卡片等)也有。每次都试着
    node.querySelector('.CommentContent'),是 null 就立即返回,单次几十微秒的空转,和脚本里现有的评论监听行为一样。
  3. 每次评论接口都会 rescanComments() 扫一遍全部头像
    会跑一次
    document.querySelectorAll(...),但评论接口只在用户操作时才请求(展开评论、加载更多),就几次而已。每次复杂度是
    O(页面头像数),几百个元素也就几毫秒;已标记的有 dataset.zhihuEVis 守卫会直接跳过。
    内存方面,只缓存 is_visible_only_to_myself === true 的评论(也就是你自己不可见的那些),数量极小。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant