自动重定向到旧版主页,mzh域名自动重定向zh域名
// ==UserScript== // @name 萌娘百科重定向旧版主页 // @namespace https://greasyfork.org/zh-CN/scripts/505374 // @supportURL https://greasyfork.org/zh-CN/scripts/505374 // @version 2.1 // @description 自动重定向到旧版主页,mzh域名自动重定向zh域名 // @author OctoberSama&ChatGPT // @license AGPL // @match zh.moegirl.org.cn/* // @match mzh.moegirl.org.cn/* // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function () { // 从 Tampermonkey 存储中获取用户之前的选择状态,默认值为 true(启用重定向) let redirectEnabled = GM_getValue("redirectEnabled", true); // 注册菜单项时的 ID(作为唯一标识) const menuCommandId = "redirect-toggle"; // 更新菜单项的状态和注册 function updateMenuCommand() { // 使用相同的 ID 注销之前的菜单项 GM_unregisterMenuCommand(menuCommandId); // 注册新的菜单项 GM_registerMenuCommand( (redirectEnabled ? "✅" : "❌") + "重定向mzh.moegirl.org.cn", function() { // 提示用户会刷新页面,确认是否继续 if (confirm("❗️❗️❗️继续操作将会导致网页刷新 强烈建议不要在编辑中使用该功能\n如有未保存的内容 请点击“取消” 是否继续?")) { // 切换状态 redirectEnabled = !redirectEnabled; GM_setValue("redirectEnabled", redirectEnabled); // 更新菜单项状态并刷新页面 updateMenuCommand(); // 提示用户状态已更改 alert("mzh.moegirl.org.cn 重定向已" + (redirectEnabled ? "启用" : "禁用")); // 刷新页面以确保菜单项更新 window.location.reload(); } else { // 用户选择取消,不进行任何操作 alert("操作已取消,未进行更改。"); } }, menuCommandId ); } // 初始化菜单项 updateMenuCommand(); function replace_url(url) { if (url.includes('moegirl.org.cn')) { url = url.replace(/Mainpage#\/(flow|topics)/, 'Mainpage#/legacy') .replace(/^moegirl.org.cn\/Mainpage$/, 'moegirl.org.cn/Mainpage#/legacy'); // 根据用户选择是否执行 mzh.moegirl.org.cn 重定向 if (redirectEnabled) { url = url.replace('mzh.moegirl.org.cn', 'zh.moegirl.org.cn'); } } console.log(url); return url; } function checkAndReplaceUrl() { var url = window.location.href; var newUrl = replace_url(url); if (url !== newUrl) { window.location.href = newUrl; } } // 初次加载时检查并替换 URL checkAndReplaceUrl(); // 监听 hashchange 事件,当 URL 的 hash 部分发生变化时再次检查并替换 URL window.addEventListener('hashchange', checkAndReplaceUrl); function remove####ingTab() { var ####ingtab = document.querySelector("#home-layout-toggler"); if (####ingtab) { ####ingtab.remove(); return; // 如果元素已经存在并被删除,直接退出函数 } // 使用 MutationObserver 监听 DOM 变化 var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.addedNodes.length > 0) { var ####ingtab = document.querySelector("#home-layout-toggler"); if (####ingtab) { ####ingtab.remove(); observer.disconnect(); // 删除元素后,停止观察 } } }); }); // 开始监听文档的根节点,观察子节点的变化 observer.observe(document.body, { childList: true, subtree: true }); } // 初次调用,检查并删除元素 remove####ingTab(); })();