V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hanzichi
V2EX  ›  程序员

写了一个能定位到相关回复内容的扩展,有需要的拿走,再也不用整个页面查找回复消息了

  •  
  •   hanzichi · 2017-08-13 21:43:50 +08:00 · 3019 次点击
    这是一个创建于 2660 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安装方式

    事情起因

    混迹 v 站也蛮久了,对于某个地方一直很有疑惑,就是别人回复了你的帖子或者内容,点击通知却无法定位到指定的回复内容,真是蛋疼。以前以为是个 bug,一直等等等,等修复,等了一年了没有这个功能,终于一气之下花了两个小时写了个 chrome 扩展

    https://www.v2ex.com/notifications 页面,如果是别人回复你的通知,会有一个「查看」按钮,如图

    此时不要点帖子标题,点击「查看」按钮,就能跳转到该条回复,并高亮内容

    第 1 条附言  ·  2017-08-13 22:20:03 +08:00
    可能会与现有其他作用于 V2EX 的插件 /扩展冲突,有任何冲突可以留言
    16 条回复    2017-08-15 18:10:59 +08:00
    zjsxwc
        1
    zjsxwc  
       2017-08-13 21:50:29 +08:00
    定位不了的,因为感谢 收藏也被算作 reply,然后就乱掉了。
    hanzichi
        2
    hanzichi  
    OP
       2017-08-13 21:56:33 +08:00
    @zjsxwc #1 感谢和收藏的不能定位,回复能定位,你可以试试 ...
    leyucode
        3
    leyucode  
       2017-08-13 22:06:16 +08:00 via iPhone
    @hanzichi 我一直觉得需要个,像知乎那样的,别人评论了,也可以通知到,能做出这样的功能吗?不过能做出现在这样已经很牛了
    hanzichi
        4
    hanzichi  
    OP
       2017-08-13 22:18:56 +08:00
    @leyucode 知乎是怎么通知到的,右上角给个小红点?
    leyucode
        5
    leyucode  
       2017-08-13 22:47:15 +08:00 via iPhone
    @hanzichi 有个栏目,别人发的评论收在这个栏目下面,有新的会在那一栏出现蓝色小点
    flowfire
        6
    flowfire  
       2017-08-13 23:15:36 +08:00   ❤️ 1
    需要上架 chrome store 么,我有账号
    lslqtz
        7
    lslqtz  
       2017-08-13 23:46:06 +08:00
    提醒的链接有锚点,标记了回复的楼层。
    根据这个,直接点击链接后也许可以实现直接定位高亮。
    lslqtz
        8
    lslqtz  
       2017-08-13 23:49:32 +08:00
    具体看了看。
    1、感谢和收藏也被算作 reply,但是能判断。
    2、精确还是没问题的。
    根据锚点上对应的回复楼层可以用扩展算出位置,并且不用增加额外的按钮,改变原有的体验。
    这样的设计是真的不错,锚点不会给传到服务端。
    yangff
        9
    yangff  
       2017-08-13 23:56:34 +08:00
    我记得如果 block 了用户这个 replyX 会不准确吧
    hanzichi
        10
    hanzichi  
    OP
       2017-08-14 06:42:37 +08:00
    @leyucode 不是很懂,有时间体验下
    hanzichi
        11
    hanzichi  
    OP
       2017-08-14 06:43:02 +08:00
    @flowfire 谢谢哥们,暂时不用~ 再次感谢
    hanzichi
        12
    hanzichi  
    OP
       2017-08-14 06:47:09 +08:00
    @lslqtz
    1. 感谢和收藏并不是 reply,只是表示当时该主题帖 reply 的数量
    2. 不改变原有的体验是可以的,把「查看」按钮的 url 赋值到帖子 url 上,但是在原来 dom 上操作,我觉得不优雅。而 url 是必须变化的,因为感谢,收藏,以及回复可能是一个 url,而收藏帖子很显然不能跳转,感谢对应的 reply 并不是直接的感谢帖子,而是这次感谢操作时该主题的回复数量。
    hanzichi
        13
    hanzichi  
    OP
       2017-08-14 06:47:59 +08:00
    @yangff 亲测没问题,block 后楼层并不会断层
    autoxbc
        14
    autoxbc  
       2017-08-14 07:02:41 +08:00   ❤️ 1
    感谢楼主的思路,吐槽楼主的代码

    let lis = [].slice.call(document.querySelectorAll('#Main > div:nth-child(2) > .cell'), 0)
    [].slice.call 为什么还要加个 0 作为参数,这个没意义吧

    lis = lis.filter(item => item.id)
    这一句为什么不合并到上一句,写成
    let lis = [].slice.call(document.querySelectorAll('#Main > div:nth-child(2) > .cell[id]'))

    let top = getElementTop(lis[floor - 1])
    window.scrollTo(0, top)
    这里有现成的 scrollIntoView 为什么不用
    hanzichi
        15
    hanzichi  
    OP
       2017-08-14 09:40:09 +08:00
    @autoxbc 感谢 review,代码已优化,确实不知道有 scrollIntoView 这个方法,再次感谢! 有其他代码问题还望指出~
    hanzichi
        16
    hanzichi  
    OP
       2017-08-15 18:10:59 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:51 · PVG 02:51 · LAX 10:51 · JFK 13:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.