js 有办法是别:visited 链接,然后进行屏蔽吗?

2021-05-09 12:18:37 +08:00
 woshinide300yuan
//获取所有的块
var img_sections = document.getElementsByClassName('l7cibp-2 mHtZd');

//遍历所有的块
for (var i=0, len=img_sections.length|0; i<len; i=i+1|0) {
//获取块里的文字条
var text_bars = img_sections[i].getElementsByClassName('iasfms-4 hegAwd');
//获取文字条的背景色
var bgcolor = window.getComputedStyle(text_bars[0]).getPropertyValue("background-color");
//alert 用来 debug 背景色的值是什么
alert(bgcolor);

//判断背景色不是 rgb(0, 0, 0) 纯黑
if(bgcolor != 'rgb(0, 0, 0)')
{
//debug
alert("q1123213");
//不是纯黑就把图字块隐藏起来
img_sections[i].style.display='none';
}
}


- - 搞完了发现,visited 并不是网页 CSS 里的样式区分的。所以在上述代码眼里,全都是一样的。无法做到“ 不是纯黑就把图字块隐藏起来 ” ,都是全黑……
2317 次点击
所在节点    JavaScript
16 条回复
codehz
2021-05-09 12:25:56 +08:00
浏览器普遍做了特殊处理,没法通过一般正常途径拿到 visited 信息,目前有一种思路是做一个基于时间的侧信道攻击拿到颜色(不过也被堵的差不多了,以前的 mix-blend-mode 方法成功率不高
opengps
2021-05-09 12:31:30 +08:00
应该不行,标记访问过是浏览器的一个识别能力。
这个功能得看浏览器的历史访问地址里是否出现过,然而似乎没找到浏览器对外提供这个接口
rekulas
2021-05-09 12:37:36 +08:00
visited 属于个人隐私无法识别
除非配合访问的链接后端一起处理可以判断
woshinide300yuan
2021-05-09 13:23:37 +08:00
谢谢大家,已然放弃。
luob
2021-05-09 13:38:50 +08:00
document
.getElementsByClassName('l7cibp-2 mHtZd')
.map(section => {
section
.getElementsByClassName('iasfms-4 hegAwd')
.addEventListener('click', () => {
section.setAttribute('data-text-visited', true)
})
}



.l7cibp-2.mHtZd[data-text-visited] {
display: none;
}


这样行吗?
luob
2021-05-09 13:41:16 +08:00
打了半天空格怎么还是吞成了这个鬼样子……中间还有写错的,反正就是这么个意思凑活着看吧
lichdkimba
2021-05-09 13:58:25 +08:00
不然网站放个别的网站的地址就能检测到用户访问过没有了、、
love
2021-05-09 14:32:30 +08:00
为何要屏蔽 visited 链接?
有些站我要标识哪些是我看过的,我都是用 Stylus 给 visited 链接加特别的顔色
szharrydev
2021-05-09 20:15:52 +08:00
document.querySelectorAll('a.l7cibp-2 mHtZd:visited')
mostkia
2021-05-09 21:36:20 +08:00
可以换个折中的思路,访问的链接一定是被点击激活的,可以为每个链接绑定一个点击事件,首先阻止默认的跳转,然后设置一个 cookie,吧每次点击的 href 存储到 cookie,随后再放行,下次刷新回到本页面后,首先查找这个 cookie 数据,看看有哪些链接记录在案,随后遍历页面所有的锚点,匹配的直接隐屏蔽就行了。
jinliming2
2021-05-10 00:01:13 +08:00
@szharrydev :visited 伪类貌似是可以设置样式,但是无法被 querySelector 选择到的,computedStyle 里获取到的也是非 :visited 的样式。
woshinide300yuan
2021-05-10 00:11:07 +08:00
@luob 哈哈哈哈哈……谢谢你
woshinide300yuan
2021-05-10 00:11:33 +08:00
@mostkia 能理解,但不会,哈哈…… 谢谢您啦。
woshinide300yuan
2021-05-10 00:12:15 +08:00
@love 有时候页面太多,太密集,想直接屏蔽掉,不想肉眼余光去费神挑选,眼压太大了。嘻嘻~
Mutoo
2021-05-10 07:09:28 +08:00
由于 :visited 涉及用户隐私(浏览记录),浏览器默认把所有链接认为是 unvisited,于是 querySelector(':visited') 不会起作用。
yunyuyuan
2021-05-10 09:16:17 +08:00
这属于属于隐私了,想想你进一个网站,上面有个 p**nhub 链接,是:visited,别人就知道你上过 p 站了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX