Greasy Fork

Greasy Fork is available in English.

TAPD 高亮关键字

用于在 TAPD 需求详情页面高亮关键字,便于快速定位自己关心的字段

当前为 2022-08-04 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         TAPD 高亮关键字
// @namespace    [email protected]
// @version      0.1.2
// @description  用于在 TAPD 需求详情页面高亮关键字,便于快速定位自己关心的字段
// @author       qiuhongliang
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tapd.cn
// @match        https://www.tapd.cn/*/prong/stories/view/*
// @grant        none
// @license      GPL
// ==/UserScript==

(function () {
  "use strict";

  // 需要高亮的字段列表
  keyListLight(["发布计划", "接口线上测试", "开发人员"]);

  function keyListLight(keyList, fontColor, bcgColor) {
    // 获取到右侧“基本信息”模块内容,不直接用 id 定位具体 id,而用正则匹配,是因为右侧的字段列会随时变,id 也会变。
    var bodyDiv = document.querySelector(
      "#subject-content > div.tui-t4o.subject_view > div.tui-b.content-right"
    );
    var bodyHtml = bodyDiv.innerHTML;

    fontColor = fontColor || "red"; // 默认字体颜色
    // bcgColor = bcgColor || "PaleTurquoise"; // 默认背景色

    var htmlTagReg = new RegExp("<.*?>", "ig"); //匹配html标签
    var htmlTagDivInfo = bodyHtml.match(htmlTagReg); //存放html元素的数组

    var randKey = "abc" + new Date().getTime() + "xyz"; // 组装随机数字,用于临时替换标签,避免要高亮的数据和标签重复
    bodyHtml = bodyHtml.replace(htmlTagReg, randKey); //替换html标签
    // console.log(bodyHtml);

    // 替换关键字,使其高亮
    for (let key of keyList) {
      let keyReg = new RegExp(key, "g");

      let style = "";
      style += "color:" + fontColor + ";";
      style += "background-color:" + bcgColor + ";";
      let sKey = "<span style='" + style + "'>" + key + "</span>";

      bodyHtml = bodyHtml.replace(keyReg, sKey); //替换key
    }

    // 恢复html标签
    var num = -1;
    bodyHtml = bodyHtml.replace(new RegExp(randKey, "g"), function () {
      num++;
      return htmlTagDivInfo[num];
    });

    bodyDiv.innerHTML = bodyHtml;
  }
})();