0

0

如何使用 Tampermonkey 为通知列表的每一项自动添加序号

霞舞

霞舞

发布时间:2026-01-15 20:55:23

|

403人浏览过

|

来源于php中文网

原创

如何使用 Tampermonkey 为通知列表的每一项自动添加序号

本文介绍如何编写 tampermonkey 脚本,在页面中匹配特定 `

  • ` 元素并为其动态添加递增序号(如 `1. `、`2. `),支持直接修改 dom 或复用现有 `aria-label` 中的编号,适用于批量操作通知类列表场景。

    在自动化处理通知列表(如下载队列、任务提醒)时,为每项添加可视化的序号能显著提升人工操作效率——尤其当你需要按顺序逐个点击触发动作(例如下载导出文件)。虽然问题中提到了转向 Bookmarklet 方案,但 Tampermonkey 完全可胜任此任务,且更稳定、易维护、支持跨 iframe(需正确配置)。

    以下是一个健壮、生产就绪的 Tampermonkey 脚本示例,它:

    • 精确定位 data-testid="notifications-list" 的 <ul>;
    • 遍历所有子 <li data-testid="notification-container">;
    • 方案一(推荐):在每项标题前插入序号(如 1. Widget ready for download);
    • 方案二(备选):提取并强化 aria-label 中已有的 (n of N) 编号(如将 "Widget ready for download (1 of 22)" 改为 "【1/22】Widget ready for download")。

    ✅ 完整脚本如下(已适配你提供的 HTML 结构与类名):

    // ==UserScript==
    // @name         Notification List Numbering
    // @namespace    https://github.com/yourname
    // @version      1.2
    // @description  Add sequential numbers to each notification item (e.g., "1. Widget ready...")
    // @author       You
    // @match        *://warnerhotels.eu.qualtrics.com/*
    // @grant        none
    // @run-at       document-idle
    // ==/UserScript==
    
    (function () {
        'use strict';
    
        // 等待目标列表加载(防动态渲染)
        const waitForList = () => {
            const ul = document.querySelector('ul[data-testid="notifications-list"]');
            if (ul) {
                annotateNotifications(ul);
            } else {
                setTimeout(waitForList, 300);
            }
        };
    
        const annotateNotifications = (ul) => {
            const items = ul.querySelectorAll('li[data-testid="notification-container"]');
    
            items.forEach((li, index) => {
                const num = index + 1;
    
                // ✅ 方案一:在标题前插入序号(最直观、不影响原 aria-label)
                const header = li.querySelector('h3.header-text--TaaKMDumePzcO7v');
                if (header && !header.hasAttribute('data-numbered')) {
                    const originalText = header.textContent.trim();
                    header.textContent = `${num}. ${originalText}`;
                    header.setAttribute('data-numbered', 'true');
                }
    
                // ? 方案二(可选):增强 aria-label(取消注释启用)
                /*
                const notificationDiv = li.querySelector('[data-testid="notification"]');
                if (notificationDiv && notificationDiv.hasAttribute('aria-label')) {
                    const label = notificationDiv.getAttribute('aria-label');
                    const enhancedLabel = label.replace(
                        /(.+?)\s*\(\d+\s*of\s*\d+\)/i,
                        `【${num}】$1`
                    );
                    notificationDiv.setAttribute('aria-label', enhancedLabel);
                }
                */
            });
    
            console.log(`✅ Annotated ${items.length} notification items.`);
        };
    
        // 启动
        waitForList();
    })();

    ? 关键说明与注意事项:

    天工大模型
    天工大模型

    中国首个对标ChatGPT的双千亿级大语言模型

    下载
    • @run-at document-idle 确保脚本在 DOM 就绪但无需等待全部资源加载时执行,兼顾速度与可靠性;
    • waitForList() 使用轮询机制应对 SPA 动态渲染(如 React/Vue 渲染的通知列表),避免因元素未出现导致失败;
    • 防重复标注:通过 data-numbered 属性标记已处理项,避免多次运行脚本造成序号叠加(如 1. 1. Widget...);
    • 不破坏无障碍访问:方案一仅修改视觉文本,保留原始 aria-label;方案二则主动优化语义化标签,更适合屏幕阅读器;
    • 类名容错性:脚本使用 querySelector + data-testid(稳定属性)而非依赖易变的 CSS 类名(如 notification-container--cmGv8ll9qjdnKcX),大幅提升兼容性;
    • iframe 场景支持:若通知列表位于 iframe 内,只需将 document 替换为对应 iframe 的 contentDocument(需确保同源),例如:
      const iframe = document.querySelector('iframe[src*="notifications"]');
      if (iframe?.contentDocument) {
          const ul = iframe.contentDocument.querySelector('ul[data-testid="notifications-list"]');
          // ...后续同理
      }

    ? 进阶提示:如需支持“点击序号快速跳转”或“键盘快捷键(如 Ctrl+1~9)触发对应项”,可在序号旁插入 <button> 并绑定 click 事件模拟原生交互——这在批量下载场景中极具实用价值。

    该脚本轻量、无外部依赖、开箱即用,是处理通知类列表序号标注的专业级解决方案。

  • 热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    WorkBuddy
    WorkBuddy

    腾讯云推出的AI原生桌面智能体工作台

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    DOM是什么意思
    DOM是什么意思

    dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

    4339

    2024.08.14

    DOM是什么意思
    DOM是什么意思

    dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

    4339

    2024.08.14

    li是什么元素
    li是什么元素

    li是HTML标记语言中的一个元素,用于创建列表。li代表列表项,它是ul或ol的子元素,li标签的作用是定义列表中的每个项目。本专题为大家li元素相关的各种文章、以及下载和课程。

    436

    2023.08.03

    PHP 命令行脚本与自动化任务开发
    PHP 命令行脚本与自动化任务开发

    本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

    67

    2025.12.13

    iframe写法有哪些
    iframe写法有哪些

    iframe写法有基本Iframe写法、嵌套Iframe写法、自适应宽高的Iframe写法、带有样式和属性的Iframe写法、内联Iframe写法和使用JavaScript动态创建Iframe写法。种写法都有自己的特点和适用场景。根据实际需求,选择合适的写法可以实现所需的功能和效果。

    490

    2023.10.19

    C# ASP.NET Core微服务架构与API网关实践
    C# ASP.NET Core微服务架构与API网关实践

    本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

    69

    2026.03.11

    Go高并发任务调度与Goroutine池化实践
    Go高并发任务调度与Goroutine池化实践

    本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

    37

    2026.03.10

    Kotlin Android模块化架构与组件化开发实践
    Kotlin Android模块化架构与组件化开发实践

    本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

    82

    2026.03.09

    JavaScript浏览器渲染机制与前端性能优化实践
    JavaScript浏览器渲染机制与前端性能优化实践

    本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

    97

    2026.03.06

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 0.9万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3.6万人学习

    CSS教程
    CSS教程

    共754课时 | 42.4万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号