精准戒毒工具
前作:强制戒毒工具。需要tampermonkey和对javascript的基本了解。u1s1,adblocks好用多了
由于对某乎依赖性越来越大,我有时需要暂停使用强制戒毒工具。然而在之后总是会沉迷某乎无法自拔。于是我搞了这个玩意。(搞了一下午,,
代码放在了github上,写得比较儒雅随和,大家看看就好。
思路大概是遍历网页里的所有元素(DOM的element),判断它是不是能够让人上瘾的元素(例如“为你推荐”、“其他人都在看”、“网络热搜”)。如果是的,那么把这个元素删掉,否则不删。
具体哪些东西会令人上瘾的判断方法因人而异。比如说我把某乎的各种推荐、某度的热搜和相关搜索、批特的热搜和推荐关注全都干掉了。所以叫做“精准戒毒工具”。以后还会根据自身上瘾情况修改该工具。
注意,如果网页动态改变了的话(比如说某乎每次往下翻的时候都会多给你一些feed),那么你要重新遍历所有element。实现方法是使用一个MutationObserver:
window.onload = fuck(); const config = { attributes: true, childList: true, subtree: true, characterData: true }; const observer = new MutationObserver(fuck); observer.observe(document.documentElement, config);
于是,每次网页有了任何变化,MutationObserver就会调用函数来逐一分析新的网页中的元素,并删掉那些每一根毛孔都滴着血和肮脏的东西的元素。
这里要点名批评某度,因为某度把MutationObserver禁掉了。。。(就是把它重新赋值成了null。。。)解决方法如下:
一、用iframe重置MutationObserver的值。具体代码如下,抄的网上的。
function restoreGlobalAPI(name) { //处理百度封MutationObserver的问题 if (window[name]) return; var iframe = document.createElement('iframe'); iframe.width = iframe.height = 0; iframe.style.display = 'none'; document.body.appendChild(iframe); window[name] = iframe.contentWindow[name]; iframe.remove(); } restoreGlobalAPI('MutationObserver');
二、@run-at一栏要写“document-start”。也就是说要抢在某度搞事之前运行tampermonkey代码。
实现效果。上面是戒毒前,下面是戒毒后。
|
|
|
另外,有一些罪大恶极的网站(比如某乎首页,不断地给你推送无营养内容),干脆直接禁了好了。