Greasy Fork

原创 - 萌娘百科 - 切换文字遮罩

一个遵循 HarmonyOS 设计指南得、通过按下`.`键或菜单命令切换部分站点得、切换文字遮罩展示或隐藏的脚本。目前支持萌娘百科及镜像站。

目前为 2024-03-09 提交的版本。查看 最新版本

// ==UserScript==
// @name         原创 - 萌娘百科 - 切换文字遮罩
// @name:en_US   Original - MoeGirl - Switch text mask
// @description  一个遵循 HarmonyOS 设计指南得、通过按下`.`键或菜单命令切换部分站点得、切换文字遮罩展示或隐藏的脚本。目前支持萌娘百科及镜像站。
// @version      1.0.1
// @author       CPlayer
// @license      MulanPSL-2.0
// @namespace    https://www.gitlink.org.cn/CPlayerCHN
// @match        *://zh.moegirl.org.cn/*
// @match        *://mzh.moegirl.org.cn/*
// @match        *://mobile.moegirl.org.cn/*
// @match        *://moegirl.uk/*
// @match        *://moegirl.icu/*
// @icon         https://zh.moegirl.org.cn/favicon.ico
// @grant        GM_addStyle
// @grant        GM_registerMenuCommand
// @run-at       document-body
// @noframes
// ==/UserScript==

(function() {
    'use strict';

    // 调整样式
    GM_addStyle('/*修改动效*/ .heimu, .heimu a { transition: color 0.15s cubic-bezier(0.00, 0.00, 0.40, 1.00) !important }  /*去除遮罩*/ body.show-mask .heimu, body.show-mask .colormu > span { color: #FFFFFF !important } body.show-mask .hovers-blur { filter: blur(.5px) } body.show-mask .heimu a { color: #5291FF !important }  /*美化链接*/ a { color: #0A59F7 }');

    // 定义「重复触发」变量和「切换展示遮罩」函数。
    var repeat = false;
    function switcher() {
        if(/show-mask/.test(document.body.className)) {
            document.body.classList.remove("show-mask");
        }else {
            document.body.classList.add("show-mask");
        }
    }

    // 运行「切换展示遮罩」函数,并注册相关菜单命令。
    switcher();
    GM_registerMenuCommand('切换隐藏与显示', () => switcher() );
    // 监听按下`.`键且非重复触发就,设置为重复触发并切换显示状态。
    addEventListener("keydown", (data) => {
        if(!repeat && data.key === ".") {
            repeat = true;
            switcher();
        }
    });
    // 监听抬起`.`键且重复触发就,恢复「重复触发」状态。
    addEventListener("keyup", (data) => {
        if(repeat) {
            repeat = false;
        }
    });

    // 移除悬浮文字。
    document.querySelectorAll('.heimu, .colormu, .hovers-blur').forEach((ele) => {
        ele.removeAttribute('title');
    });

})();