You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Greasemonkey+JavaScript修改指定class的div文本内容?

解决Greasemonkey脚本仅作用于指定class的div并处理文本格式

问题分析

你之前的脚本全页生效,核心原因是用//body/text()选中了页面所有文本节点,没有限定只处理class为sub的div。现在需要精准定位目标元素,再针对性处理文本格式。

修改后的脚本

(function() {
    'use strict';
    // 获取所有class为sub的div元素
    const subDivs = document.querySelectorAll('.sub');
    
    // 遍历每个目标div
    subDivs.forEach(div => {
        // 获取div的文本内容并去除首尾空白
        let text = div.textContent.trim();
        // 正则匹配:剔除「|」及之前、「by」及之后的内容,保留中间时间部分
        const processedText = text.replace(/^\d+\s*\|\s*(.*?)\s*by.*$/, '$1');
        // 将处理后的文本放回div
        div.textContent = processedText;
    });
})();

关键说明

  • document.querySelectorAll('.sub'):精准锁定所有class为sub的div,彻底避免全页范围的无效操作
  • 正则表达式/^\d+\s*\|\s*(.*?)\s*by.*$/:
    • ^\d+\s*\|\s*:匹配开头的数字、任意空格、|、任意空格,这部分会被完全剔除
    • (.*?):非贪婪捕获中间的时间内容(比如「10 minutes ago」)
    • \s*by.*$:匹配by及之后的所有内容,这部分也会被剔除
  • trim():先清理文本首尾的多余空格,避免处理后出现不必要的空白

原脚本的问题点

原脚本用document.evaluate选中了body下所有文本节点,没有范围限定;同时正则写法存在错误(直接把正则字符串当对象键,创建RegExp时会多一层转义,导致匹配逻辑失效)。

内容的提问来源于stack exchange,提问作者Kuppdesto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:07:16