NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name 自动屏蔽知乎三无用户的评论 // @description:zh-CN 自动屏蔽无头像、无贡献、不友善用户的评论(目前仅实现头像检测,贡献检测太耗流量、基于 SoLiD 的云黑名单还在实验中) // @author linonetwo // @namespace https://onetwo.ren/ // @match *://*.zhihu.com/* // @grant none // @version 0.2.2 // @homepageURL https://github.com/linonetwo/zhihu-linonetwo-userscripts // @supportURL https://github.com/linonetwo/zhihu-linonetwo-userscripts/issues // @license MIT // @icon https://pic1.zhimg.com/2e33f063f1bd9221df967219167b5de0_m.jpg // @run-at document-start // @date 04/10/2019 // @modified 04/11/2019 // ==/UserScript== const userscriptautocollapsed = 'userscriptautocollapsed'; const 默认头像的URL片段 = 'https://pic4.zhimg.com/da8e974dc'; const 检查间隔毫秒 = 250; const 给评论列表加上事件监听器 = () => { // 轮询直到评论列表加载完毕 const intervalHandler = setInterval(() => { const 评论列表们 = document.querySelectorAll('div.CommentListV2'); if (评论列表们.length > 0) { // clearInterval(intervalHandler); // useless for such a web app 自动隐藏没有头像的用户的评论(); 评论列表们.forEach(评论列表 => 评论列表.addEventListener('mousemove', throttle(自动隐藏没有头像的用户的评论, 检查间隔毫秒))); 评论列表们.forEach(评论列表 => 评论列表.addEventListener('scroll', throttle(自动隐藏没有头像的用户的评论, 检查间隔毫秒))); } }, 检查间隔毫秒); } const 给翻页按钮加上事件监听器 = () => { const 翻页按钮 = document.querySelectorAll('button.Button.PaginationButton.Button--plain'); 翻页按钮.forEach(按钮 => 按钮.addEventListener('click', 给评论列表加上事件监听器, { passive : true })); } function 给评论按钮加上事件监听器以便给评论列表加上事件监听器() { [...document.querySelectorAll('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel')] // 知乎的图片放在 figure 里面 .filter(按钮 => 按钮.innerText.includes('评论')) .forEach(评论按钮 => 评论按钮.addEventListener('click', 给评论列表加上事件监听器, { passive : true })); }; function 自动隐藏没有头像的用户的评论() { [...document.querySelectorAll('ul.NestComment'), ...document.querySelectorAll('li.NestComment--child')] // 选择每条评论 .filter(评论 => { if (评论.dataset[userscriptautocollapsed]) return false; const 头像 = 评论.querySelector('img.Avatar'); if (头像 && 头像.src.includes(默认头像的URL片段)) return true; }) .forEach(评论 => { 评论.dataset[userscriptautocollapsed] = true; 评论.style = "display: none;"; }); }; // 知乎会延迟加载内容,所以当滚动页面的时候再检查一次 // From: https://www.sitepoint.com/throttle-scroll-events/ function throttle(fn, wait) { var time = Date.now(); return function() { if ((time + wait - Date.now()) < 0) { fn(); time = Date.now(); } } } 自动隐藏没有头像的用户的评论(); 给评论列表加上事件监听器(); 给评论按钮加上事件监听器以便给评论列表加上事件监听器(); setTimeout(() => window.addEventListener('scroll', throttle(给评论按钮加上事件监听器以便给评论列表加上事件监听器, 检查间隔毫秒), { passive : true }), 1);