Greasy Fork is available in English.

知乎增强

屏蔽指定类别(视频、盐选、文章、想法、关注[赞同了XX/关注了XX]等等)、屏蔽用户、屏蔽关键词、默认收起回答、快捷收起回答/评论(左键两侧)、快捷回到顶部(右键两侧)、区分问题文章、移除高亮链接、净化搜索热门、净化标题消息、展开问题描述、显示问题作者、默认高清原图(无水印)、置顶显示时间、完整问题时间、直达问题按钮、默认站外直链...

< Σχολιασμός για τον κώδικα 知乎增强

Αναφορά: Καλός - ο κώδικας λειτουργεί

§
Δημοσιεύτηκε: 24/09/2024

作者您好,

感谢您编写的脚本,是否可以新增一个功能:去除知乎网页端回答和文章中类似 “知乎直答✦” 的关键词和超链接。

我参考了 屏蔽知乎直答标记 脚本,并做了一些修改,具体如下:

// ==UserScript==
// @name         去除知乎直答标记
// @version      1.0
// @description  去除知乎网页端回答和文章中"知乎直答✦"关键词的超链接和✦角标。
// @match        *://*.zhihu.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const targetClass = "RichContent-EntityWord";

    // 将超链接内容替换为纯文本,并修改类名
    function replaceLinks() {
        const links = document.querySelectorAll(`a.${targetClass}`);
        links.forEach(link => {
            if (link.dataset.modified) return; // 跳过已处理的链接

            // 修改类名,移除多余的类,保留"RichContent-EntityWord"
            link.className = targetClass;

            let keyword = link.textContent;
            if (keyword) {
                // 直接用文本替换链接内容,但保留链接节点,以避免操作DOM结构
                link.removeAttribute('href'); // 移除超链接功能
                link.innerHTML = keyword; // 仅保留文字内容
                link.dataset.modified = "true"; // 标记为已修改
            }
        });
    }

    // 页面加载时初次调用以替换链接
    replaceLinks();

    // 设置一个MutationObserver监视document.body的变化,处理动态添加的内容
    const observer = new MutationObserver(replaceLinks);
    observer.observe(document.body, { childList: true, subtree: true });
})();
    

希望这个修改对您有帮助,如果能考虑添加这个功能就太好了!

谢谢!

X.I.UΔημιουργός
§
Δημοσιεύτηκε: 25/09/2024
Επεξεργάστηκε: 25/09/2024

脚本其实从一开始就有这个功能的,叫做 移除高亮链接,起初知乎的这玩意是指向知乎搜索 URL 的,后来开始搞 AI 后,前段时间就将链接改成了 https://zhida.zhihu.com/search?q=XXXX 这种搜索了,当时也更新脚本跟进了(当时还是一个人在 Github 提 PR)。

我刚才看了一下,是知乎又改了链接,把 q=XX 这个参数放到链接后面去了(加了其他一大串参数),导致脚本匹配元素 href 开头 https://zhida.zhihu.com/search?q= 时匹配不到,我已经把末尾的 q= 删掉了,现在已经可以正常匹配并移除高亮了。

  • 修复 [移除高亮链接] 功能又失效了的问题(知乎又改动了)

你更新脚本即可。

Δημοσίευση απάντησης

Συνδεθείτε για να δημοσιεύσετε μια απάντηση.