Get rid of ####ing highlighted search keywords.
// ==UserScript== // @name No Keywords // @name:zh-CN 移除搜索关键词 // @namespace http://tampermonkey.net/ // @version 0.3.3 // @description Get rid of ####ing highlighted search keywords. // @description:zh-CN 去你妈的傻逼高亮搜索关键词。 // @author PRO // @match https://zhidao.baidu.com/question/* // @match https://www.bilibili.com/* // @match https://blog.csdn.net/* // @icon https://cors.cdn.bcebos.com/amis/namespaces/m-activity/iknow-duck/2022-12/1671625780490/%E6%90%9C%E7%B4%A2wap.png // @grant none // @license gpl-3.0 // ==/UserScript== (function () { 'use strict'; const name = GM_info.script.name; const log = console.log.bind(console, `[${name}]`); // Adapted from https://www.abeautifulsite.net/posts/querying-through-shadow-roots/ function shadowQueryAll(selector, rootNode = document) { const selectors = String(selector).split('>>>'); let currentNodes = [rootNode]; selectors.forEach((selector) => { let nextNodes = []; currentNodes.forEach(node => { if (node instanceof Element && node.shadowRoot) { nextNodes.push(...node.shadowRoot.querySelectorAll(selector)); } else if (node === rootNode) { nextNodes.push(...rootNode.querySelectorAll(selector)); } }); currentNodes = nextNodes; }); return currentNodes; } function ####(kw) { // `kw` is the element to be fixed const txt = kw.textContent; const tn = document.createTextNode(txt); kw.parentElement.replaceChild(tn, kw); log(`Removed keyword "${txt}"`); } function purify(config) { for (const keyword of config.keywords) { shadowQueryAll(keyword).forEach(####); } for (const icon of config.icons) { shadowQueryAll(icon).forEach(icon => icon.remove()); } } const allConfig = { "zhidao.baidu.com": { keywords: [".rich-content-container a[highlight='true']"], icons: [], persistent: false }, "www.bilibili.com": { keywords: [ "bili-comments >>> bili-comment-thread-renderer >>> bili-comment-renderer >>> bili-rich-text >>> a[data-keyword]", "bili-comments >>> bili-comment-thread-renderer >>> bili-comment-replies-renderer >>> bili-comment-reply-renderer >>> bili-rich-text >>> a[data-keyword]" ], icons: ["bili-comments >>> bili-comment-thread-renderer >>> bili-comment-renderer >>> bili-rich-text >>> a[data-keyword] > img"], persistent: true }, "blog.csdn.net": { keywords: ["a.hl-1", "span.edu-hl.hl-1", "span.words-blog.hl-git-1"], icons: [], persistent: false } } if (!(window.location.hostname in allConfig)) return; const config = allConfig[window.location.hostname]; if (config.persistent) { window.setInterval(() => { purify(config); }, 1000); } else { purify(config); } })();