解释一下,是类似ad-block的插件,但是它的功能不是屏蔽广告,而是【屏蔽文章】【屏蔽作者】,在你不想看的文章或者帖子上面右键,你就能选择屏蔽作者还是屏蔽文章,下次就不会再看到他的文章了!是不是很好玩?一起来探索一下呀
一、为什么要搞一个这个插件
前几天浏览到【掘金前站长 @阴阴】的一篇专栏 “老站长近期问题解答”,闲来无事浏览一下评论,发现好多掘友都有屏蔽文章或者作者的诉求,但是掘金目前并没有这个功能
下面的截图来自老“站长近期问题解答”底部掘友的评论
我属于那种闲不住的,总喜欢找点事干陶冶一下情操。既然有那么多人希望有屏蔽功能,那我做一个肯定有人用吧?于是就搞了这个屏蔽插件
插件能干什么
用过ad-block的都知道,它可以屏蔽浏览器中的广告,但是想屏蔽某些文章或作者,用它的话就不太灵通了。
所以我做的就是【屏蔽作者】+【屏蔽文章】的插件【content-block】,在你不想看的文章或者作者上面右键,就可以屏蔽掉对应的内容。不过它仅限于Chrome桌面浏览器
二、content-block介绍
安装
插件已经发布到chrome应用商店,点击这里即可安装。
如果安装不上的话,可以把源代码下载到本地,可以采取下面方式安装体验
使用
(1)在首页列表页面,右键你不喜欢的文章,在右键菜单中选择【屏蔽作者】或着【屏蔽文章】即可
(2)在文章页面,任意地方右键,同样可以屏蔽这篇文章或者作者
【查看我的屏蔽列表】
点击浏览器右上角,插件图标,可以查看你的屏蔽数据,你可以在这里把作者或者文章,从屏蔽列表中移除
插件屏蔽范围
目前仅支持首页专栏。沸点啥的不支持(以后会考虑)
如何关闭插件
如果你不想屏蔽或者暂时取消屏蔽,直接在这关闭 chrome://extensions/
【注意】如果你选择删除插件,再次安装的时候,之前的屏蔽数据就没有了,操作须谨慎
实现原理
流程大概分3步
1。右键选取不想看的文章,获取文章的信息,包括文章url,作者等
2。添加文章信息到本地存储storage
3。拦截请求,根据storage过滤数据返回,剔除被屏蔽的数据
代码结构
- main.js负责过滤数据
- content.js负责消息通信,解析dom
- background.js创建右键菜单
- bridge.js负责动态插入js(解决插件无法获取浏览器js变量)
- pop.js插件弹出窗口页面,屏蔽列表渲染
核心点:如何拦截请求?
拿掘金来说,页面的请求都是基于XML request发送,修改它,具体代码【main.js】
不知道为啥,代码粘贴过来总是变成一行,只能截图了
数据存储 【chrome.storage.sync】
它和普通的存储不一样的地方就是可以关联chrome账号,如果你换电脑,只要登陆账号,数据是同步的
如果你看代码的话会发现,插件还使用了localStorge,原因是chrome插件的安全策略限制,插件无法直接访问浏览器js变量,所以插件的数据要同步到页面localStorge中,在main.js中就可以直接获取屏蔽的数据
最后
插件安装地址 chrome.google.com/webstore/de…
文章代码部分只介绍了最核心的一个点,如果你想看完整代码,请移步 github.com/ColdDay/con…
开源不易,觉得可以就给个 Star 作为鼓励,感谢
声明:由于作者水平有限,不保证插件的稳定性或者其它未知bug,仅用于学习