知乎超链接转纯文本

用户回答中的一些关键词会被知乎自动转换为站内搜索的超链接。然而,知乎的搜索功能并不好用,且作为一个问答社区,知乎并不适合作为查询工具。当用户试图选中这些被超链接标记的词语,准备复制到搜索引擎进行搜索时,极易误触链接而跳转至知乎的搜索页面。本脚本通过移除这些自动生成的超链接,将文本恢复为普通格式,从而避免误触。

  1. // ==UserScript==
  2. // @name 知乎超链接转纯文本
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description 用户回答中的一些关键词会被知乎自动转换为站内搜索的超链接。然而,知乎的搜索功能并不好用,且作为一个问答社区,知乎并不适合作为查询工具。当用户试图选中这些被超链接标记的词语,准备复制到搜索引擎进行搜索时,极易误触链接而跳转至知乎的搜索页面。本脚本通过移除这些自动生成的超链接,将文本恢复为普通格式,从而避免误触。
  6. // @author EPC_SG
  7. // @match *://*.zhihu.com/*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // 隐藏超链接并添加普通文本
  16. function hideLinksAndAddText() {
  17. const elements = document.querySelectorAll('a.RichContent-EntityWord.css-b7erz1');
  18. elements.forEach(element => {
  19. // 检查是否已经处理过该元素
  20. if (element.dataset.processed) return;
  21.  
  22. // 隐藏超链接
  23. element.style.display = 'none';
  24.  
  25. // 创建普通文本节点
  26. const text = element.textContent;
  27. const textNode = document.createTextNode(text);
  28.  
  29. // 在超链接后插入普通文本
  30. element.parentNode.insertBefore(textNode, element.nextSibling);
  31.  
  32. // 标记该元素已处理
  33. element.dataset.processed = true;
  34. });
  35. }
  36.  
  37. // 初始化时执行一次替换
  38. hideLinksAndAddText();
  39.  
  40. // 使用 MutationObserver 监听 DOM 变化
  41. const observer = new MutationObserver((mutationsList) => {
  42. for (const mutation of mutationsList) {
  43. if (mutation.type === 'childList') {
  44. // 如果有节点被添加,执行替换
  45. hideLinksAndAddText();
  46. }
  47. }
  48. });
  49.  
  50. // 监听整个文档的变化
  51. observer.observe(document.body, {
  52. childList: true, // 监听子节点的变化
  53. subtree: true // 监听所有后代节点的变化
  54. });
  55. })();

QingJ © 2025

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