// ==UserScript== // @name 知乎屏蔽用户回答-盐选推荐、故事档案局、盐选点金 // @namespace http://tampermonkey.net/ // @version 0.3 // @description 知乎屏蔽部分官方账号的回答 // @author JimmyBeck // @match https://www.zhihu.com/question/* // @grant none // @Rewritten_script_code javascript // @downloadURL https://update.greasyfork.icu/scripts/413177/%E7%9F%A5%E4%B9%8E%E5%B1%8F%E8%94%BD%E7%94%A8%E6%88%B7%E5%9B%9E%E7%AD%94-%E7%9B%90%E9%80%89%E6%8E%A8%E8%8D%90%E3%80%81%E6%95%85%E4%BA%8B%E6%A1%A3%E6%A1%88%E5%B1%80%E3%80%81%E7%9B%90%E9%80%89%E7%82%B9%E9%87%91.user.js // @updateURL https://update.greasyfork.icu/scripts/413177/%E7%9F%A5%E4%B9%8E%E5%B1%8F%E8%94%BD%E7%94%A8%E6%88%B7%E5%9B%9E%E7%AD%94-%E7%9B%90%E9%80%89%E6%8E%A8%E8%8D%90%E3%80%81%E6%95%85%E4%BA%8B%E6%A1%A3%E6%A1%88%E5%B1%80%E3%80%81%E7%9B%90%E9%80%89%E7%82%B9%E9%87%91.meta.js // ==/UserScript== (function() { 'use strict'; var blackUsers = ['zhujiangren','gu-shi-dang-an-ju-71','liu-kan-shan-12-91'] var wrapper = document.querySelector('#QuestionAnswers-answers .List') var listLength = 0 var listInsertedDebounceTimer = 300 var attrBlocked = 'blocked' function debounce(fn, wait) { var timer = null; return function () { var context = this var args = arguments if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function () { fn.apply(context, args) }, wait) } } function queryUserLinks() { return document.querySelectorAll('a.UserLink-link') } function getUserNameFromLink(link) { var exec = /[^\/]+$/.exec(link) return exec ? exec[0] : null } function queryListItem() { return wrapper.querySelectorAll('.List-item') } function queryItemInnerUserLink(item) { return item.querySelector('.AuthorInfo-content a.UserLink-link') } function collapsedItem(item, userName) { item.setAttribute(attrBlocked, attrBlocked) var content = item.querySelector('.ContentItem') content.style.height = '0' content.style.overflow = 'hidden' var holder = document.createElement('div') holder.style.cssText = 'display:flex;align-items:center;justify-content:space-between;padding:16px;background:#fafafa;cursor:pointer;' holder.innerHTML = `折叠一条内容:发布者(${userName})点击还原` holder.onclick = function() { content.style.height='auto' holder.parentNode.removeChild(holder) holder = null content = null } item.appendChild(holder) } function maskUserLinks() { var listItem = queryListItem() listItem.forEach((item, index) => { var userLink = queryItemInnerUserLink(item) if (!userLink || item.getAttribute(attrBlocked)) { return } var href = userLink.href var userId = getUserNameFromLink(href) var userName = userLink.innerHTML if (blackUsers.includes(userId)) { collapsedItem(item, userName) } }) } function onListInserted(e) { maskUserLinks() } wrapper.addEventListener('DOMNodeInserted', debounce(onListInserted, listInsertedDebounceTimer), false) // Your code here... })();