混迹 v 站也蛮久了,对于某个地方一直很有疑惑,就是别人回复了你的帖子或者内容,点击通知却无法定位到指定的回复内容,真是蛋疼。以前以为是个 bug,一直等等等,等修复,等了一年了没有这个功能,终于一气之下花了两个小时写了个 chrome 扩展
在 https://www.v2ex.com/notifications 页面,如果是别人回复你的通知,会有一个「查看」按钮,如图
此时不要点帖子标题,点击「查看」按钮,就能跳转到该条回复,并高亮内容
1
zjsxwc 2017-08-13 21:50:29 +08:00
定位不了的,因为感谢 收藏也被算作 reply,然后就乱掉了。
|
3
leyucode 2017-08-13 22:06:16 +08:00 via iPhone
@hanzichi 我一直觉得需要个,像知乎那样的,别人评论了,也可以通知到,能做出这样的功能吗?不过能做出现在这样已经很牛了
|
6
flowfire 2017-08-13 23:15:36 +08:00 1
需要上架 chrome store 么,我有账号
|
7
lslqtz 2017-08-13 23:46:06 +08:00
提醒的链接有锚点,标记了回复的楼层。
根据这个,直接点击链接后也许可以实现直接定位高亮。 |
8
lslqtz 2017-08-13 23:49:32 +08:00
具体看了看。
1、感谢和收藏也被算作 reply,但是能判断。 2、精确还是没问题的。 根据锚点上对应的回复楼层可以用扩展算出位置,并且不用增加额外的按钮,改变原有的体验。 这样的设计是真的不错,锚点不会给传到服务端。 |
9
yangff 2017-08-13 23:56:34 +08:00
我记得如果 block 了用户这个 replyX 会不准确吧
|
12
hanzichi OP @lslqtz
1. 感谢和收藏并不是 reply,只是表示当时该主题帖 reply 的数量 2. 不改变原有的体验是可以的,把「查看」按钮的 url 赋值到帖子 url 上,但是在原来 dom 上操作,我觉得不优雅。而 url 是必须变化的,因为感谢,收藏,以及回复可能是一个 url,而收藏帖子很显然不能跳转,感谢对应的 reply 并不是直接的感谢帖子,而是这次感谢操作时该主题的回复数量。 |
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 为什么不用 |
15
hanzichi OP @autoxbc 感谢 review,代码已优化,确实不知道有 scrollIntoView 这个方法,再次感谢! 有其他代码问题还望指出~
|
16
hanzichi OP |