Greasy Fork

来自缓存

Greasy Fork is available in English.

给hio页面添加正确的标题

替换万年不变的"hio"标题

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         给hio页面添加正确的标题
// @namespace    https://github.com/dadaewqq/fun
// @version      2.6
// @description  替换万年不变的"hio"标题
// @author       dadaewqq
// @match        https://hio.oppo.com/*
// @grant        none
// @run-at       document-body
// @require      http://code.jquery.com/jquery-latest.js
// @license      MIT
// ==/UserScript==

(function () {
  "use strict";

  const $ = window.jQuery.noConflict(true);
  const currentUrl = window.location.href;

  const decodeHTMLEntities = (str) => {
    const tempDiv = document.createElement("div");
    tempDiv.innerHTML = str;
    return tempDiv.textContent || tempDiv.innerText || "";
  };

  const fetchAndSetTitle = (apiUrl, titleKey, suffix = "") => {
    fetch(apiUrl, { headers: { Accept: "application/json" } })
      .then((response) => response.json())
      .then((data) => {
        const title = titleKey.split(".").reduce((obj, key) => obj[key], data);
        if (title) document.title = decodeHTMLEntities(title) + suffix;
      })
      .catch((error) => console.error("Fetch 请求失败:", error));
  };

  const setTitleFromElement = (
    selector,
    attribute = "textContent",
    suffix = ""
  ) => {
    const element = $(selector);
    if (element.length > 0) {
      const title = element[0][attribute].trim();
      document.title = title + suffix;
    }
  };

  const urlActions = [
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/home" ||
        url === "https://hio.oppo.com/app/home/",
      action: () => (document.title = "HIO主页"),
    },

    {
      match: (url) =>
        url === "https://hio.oppo.com/app/im/integralMall" ||
        url === "https://hio.oppo.com/app/im/integralMall/",
      action: () => (document.title = "HIO积分商城"),
    },

    {
      match: (url) =>
        url === "https://hio.oppo.com/app/course/centre/index" ||
        url === "https://hio.oppo.com/app/course/centre/index/",
      action: () => (document.title = "HIO课程中心"),
    },

    {
      match: (url) =>
        url === "https://hio.oppo.com/app/training" ||
        url === "https://hio.oppo.com/app/training/",
      action: () => (document.title = "HIO项目培训"),
    },

    {
      match: (url) =>
        url === "https://hio.oppo.com/app/kb/center/knowledge-main" ||
        url === "https://hio.oppo.com/app/kb/center/knowledge-main/",
      action: () => (document.title = "HIO知识库"),
    },
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/certifications" ||
        url === "https://hio.oppo.com/app/certifications/",
      action: () => (document.title = "HIO认证中心"),
    },
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/channel/list" ||
        url === "https://hio.oppo.com/app/channel/list/",
      action: () => (document.title = "HIO直播"),
    },
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/ozone/ozoneSquare" ||
        url === "https://hio.oppo.com/app/ozone/ozoneSquare/",
      action: () => (document.title = "HIO Ozone"),
    },
    {
      match: (url) =>
        url ===
          "https://hio.oppo.com/app/learningmap/specialDetail/157862392_157829887" ||
        url ===
          "https://hio.oppo.com/app/learningmap/specialDetail/157862392_157829887/",
      action: () => (document.title = "HIO专题资源 每日好课(合集)"),
    },
    {
      match: (url) =>
        url ===
          "https://hio.oppo.com/app/learningmap/specialDetail/157862693_157829586" ||
        url ===
          "https://hio.oppo.com/app/learningmap/specialDetail/157862693_157829586/",
      action: () => (document.title = "HIO专题资源 嗨训营课程(合集)"),
    },
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/theme" ||
        url === "https://hio.oppo.com/app/theme/",
      action: () => (document.title = "HIO精品专题"),
    },
    {
      match: (url) =>
        url === "https://hio.oppo.com/app/activity/index" ||
        url === "https://hio.oppo.com/app/activity/index/",
      action: () => (document.title = "HIO活动"),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/videoCenter/index"),
      action: () => (document.title = "HIO短视频"),
    },
    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/StudyRank"),
      action: () => (document.title = "HIO学习排行榜"),
    },
    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/question/index"),
      action: () => (document.title = "HIO论坛"),
    },
    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/kb/center/view"),
      action: () =>
        setTitleFromElement("#downloadTTQrcodeTitle", "value", " 知识库 "),
    },
    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/im/productDetail/"),
      action: () =>
        setTitleFromElement(".over1", "textContent", " 积分商城物品 "),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/ozone/activity") ||
        url.startsWith("https://hio.oppo.com/app/activity"),
      action: () =>
        setTitleFromElement("#downloadTTQrcodeTitle", "value", " OJT/活动 "),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/question/detail/"),
      action: () =>
        setTitleFromElement("#downloadTTQrcodeTitle", "value", " 论坛帖子 "),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/certification/course-details"),
      action: () =>
        setTitleFromElement("#downloadTTQrcodeTitle", "value", " 嗨训营/口袋课堂 "),
    },
    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/personal"),
      action: () =>
        setTitleFromElement(
          ".title.one-line.setHeight",
          "textContent",
          " HIO个人主页 "
        ),
    },

    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/course/detail") ||
        url.startsWith("https://hio.oppo.com/app/ozone/reprintCourseVideo"),
      action: () =>
        fetchAndSetTitle(
          `https://hio.oppo.com/app/course/detailJson/${location.pathname
            .split("/")
            .pop()}`,
          "item.itm_title",
          " 课程详情 "
        ),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/module/detail") ||
        url.startsWith("https://hio.oppo.com/app/ozone/reprintModule"),
      action: () =>
        fetchAndSetTitle(
          `https://hio.oppo.com/app/module/detail-info${location.search}`,
          "item.itm_title",
          " 视频点播 "
        ),
    },
    {
      match: (url) =>
        url.startsWith("https://hio.oppo.com/app/videoCourse/detail"),
      action: () =>
        fetchAndSetTitle(
          `https://hio.oppo.com/app/videoCourse/getDetail?id=${location.pathname
            .split("/")
            .pop()}`,
          "data.title",
          " 课程 "
        ),
    },

    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/theme/detail"),
      action: () =>
        fetchAndSetTitle(
          `https://hio.oppo.com/app/theme/basicInfo?ustId=${location.pathname
            .split("/")
            .pop()}`,
          "title",
          " 专题 "
        ),
    },

    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/channel/detail"),
      action: () => {
        const cid = new URLSearchParams(new URL(currentUrl).search).get("cid");
        fetchAndSetTitle(
          `https://hio.oppo.com/app/netease/channel/detail?id=${cid}`,
          "data.name",
          " 直播 "
        );
      },
    },

    {
      match: (url) => url.startsWith("https://hio.oppo.com/app/certifications"),
      action: () => {
        const weCourseId = location.pathname.split("/").pop();
        fetchAndSetTitle(
          `https://hio.oppo.com/app/weCourse/getDetail?weCourseId=${weCourseId}`,
          "data.weCourseTitle",
          " 认证课 "
        );
      },
    },
  ];

  const executeAction = (url) => {
    for (const { match, action } of urlActions) {
      if (match(url)) {
        action();
        break;
      }
    }
  };

  executeAction(currentUrl);
})();