知乎屏蔽用户回答

try to take over the world!

  1. // ==UserScript==
  2. // @name 知乎屏蔽用户回答
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description try to take over the world!
  6. // @author You
  7. // @match https://www.zhihu.com/question/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12. 'use strict';
  13.  
  14. var blackUsers = ['zhujiangren']
  15. var wrapper = document.querySelector('#QuestionAnswers-answers .List')
  16. var listLength = 0
  17. var listInsertedDebounceTimer = 300
  18. var attrBlocked = 'blocked'
  19.  
  20. function debounce(fn, wait) {
  21. var timer = null;
  22. return function () {
  23. var context = this
  24. var args = arguments
  25. if (timer) {
  26. clearTimeout(timer);
  27. timer = null;
  28. }
  29. timer = setTimeout(function () {
  30. fn.apply(context, args)
  31. }, wait)
  32. }
  33. }
  34. function queryUserLinks() {
  35. return document.querySelectorAll('a.UserLink-link')
  36. }
  37. function getUserNameFromLink(link) {
  38. var exec = /[^\/]+$/.exec(link)
  39. return exec ? exec[0] : null
  40. }
  41. function queryListItem() {
  42. return wrapper.querySelectorAll('.List-item')
  43. }
  44. function queryItemInnerUserLink(item) {
  45. return item.querySelector('.AuthorInfo-content a.UserLink-link')
  46. }
  47. function collapsedItem(item, userName) {
  48. item.setAttribute(attrBlocked, attrBlocked)
  49. var content = item.querySelector('.ContentItem')
  50. content.style.height = '0'
  51. content.style.overflow = 'hidden'
  52. var holder = document.createElement('div')
  53. holder.style.cssText = 'display:flex;align-items:center;justify-content:space-between;padding:16px;background:#fafafa;cursor:pointer;'
  54. holder.innerHTML = `<span>折叠一条内容:发布者(${userName})</span><i style="text-decoration: underline;">点击还原</i>`
  55. holder.onclick = function() {
  56. content.style.height='auto'
  57. holder.parentNode.removeChild(holder)
  58. holder = null
  59. content = null
  60. }
  61. item.appendChild(holder)
  62. }
  63.  
  64.  
  65. function maskUserLinks() {
  66. var listItem = queryListItem()
  67. listItem.forEach((item, index) => {
  68. var userLink = queryItemInnerUserLink(item)
  69. if (!userLink || item.getAttribute(attrBlocked)) {
  70. return
  71. }
  72. var href = userLink.href
  73. var userId = getUserNameFromLink(href)
  74. var userName = userLink.innerHTML
  75. if (blackUsers.includes(userId)) {
  76. collapsedItem(item, userName)
  77. }
  78. })
  79.  
  80. }
  81.  
  82. function onListInserted(e) {
  83. maskUserLinks()
  84. }
  85.  
  86. wrapper.addEventListener('DOMNodeInserted', debounce(onListInserted, listInsertedDebounceTimer), false)
  87.  
  88. // Your code here...
  89. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址