您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Tired of that logo? Me too! Replace it with something you love. (Does Not work on The Login Page yet)
// ==UserScript== // @name Not Edio // @namespace http://tampermonkey.net/ // @version Release-v1 // @description Tired of that logo? Me too! Replace it with something you love. (Does Not work on The Login Page yet) // @author Unknown Hacker // @license CC BY-NC // @match https://www.myedio.com/* // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; const originalDesktopSrc = "https://www.myedio.com/assets/img/logo/[email protected]"; const originalMobileSrc = "https://www.myedio.com/assets/img/logo/[email protected]"; const defaultDesktopReplacementSrc = "https://raw.githubusercontent.com/MineverseTutorials/Userscripts/refs/heads/main/images/NotEdio.png"; const defaultMobileReplacementSrc = ""; const defaultFaviconSrc = ""; const defaultTabName = "Not Edio"; let userDesktopLogoSrc = GM_getValue("userDesktopLogoSrc", defaultDesktopReplacementSrc); let userMobileLogoSrc = GM_getValue("userMobileLogoSrc", defaultMobileReplacementSrc); let userFaviconSrc = GM_getValue("userFaviconSrc", defaultFaviconSrc); let userTabName = GM_getValue("userTabName", defaultTabName); let customTextReplacement = GM_getValue("customTextReplacement", "Edio"); function isValidIcoUrl(url) { return /\.ico$/i.test(url); } function updateDesktopLogoSrc() { const userInput = prompt("Enter the URL for your custom opened sidebar logo:", userDesktopLogoSrc); if (userInput && /\.(jpeg|jpg|png|svg|gif|webp)$/i.test(userInput)) { GM_setValue("userDesktopLogoSrc", userInput); userDesktopLogoSrc = userInput; location.reload(); } else if (userInput) { alert("Invalid image URL! Please enter a valid image link (e.g., .png, .jpg, .svg)."); } } function resetDesktopLogoSrc() { GM_setValue("userDesktopLogoSrc", defaultDesktopReplacementSrc); userDesktopLogoSrc = defaultDesktopReplacementSrc; location.reload(); } function updateMobileLogoSrc() { const userInput = prompt("Enter the URL for your custom closed sidebar logo:", userMobileLogoSrc); if (userInput && /\.(jpeg|jpg|png|svg|gif|webp)$/i.test(userInput)) { GM_setValue("userMobileLogoSrc", userInput); userMobileLogoSrc = userInput; location.reload(); } else if (userInput) { alert("Invalid image URL! Please enter a valid image link (e.g., .png, .jpg, .svg)."); } } function resetMobileLogoSrc() { GM_setValue("userMobileLogoSrc", defaultMobileReplacementSrc); userMobileLogoSrc = defaultMobileReplacementSrc; location.reload(); } function updateFaviconSrc() { const userInput = prompt("Enter the URL for your custom tab icon (favicon - must be .ico):", userFaviconSrc); if (userInput && isValidIcoUrl(userInput)) { GM_setValue("userFaviconSrc", userInput); userFaviconSrc = userInput; updateFavicon(); } else if (userInput) { alert("Invalid icon URL! Please enter a valid .ico file URL."); } } function resetFaviconSrc() { GM_setValue("userFaviconSrc", defaultFaviconSrc); userFaviconSrc = defaultFaviconSrc; updateFavicon(); } function updateTabName() { const userInput = prompt("Enter the new name for the tab:", userTabName); if (userInput) { GM_setValue("userTabName", userInput); userTabName = userInput; document.title = userTabName; } } function resetTabName() { GM_setValue("userTabName", defaultTabName); userTabName = defaultTabName; document.title = userTabName; location.reload(); } function updateTextReplacement() { const userInput = prompt('Enter the text to replace all mentions of "Edio":', customTextReplacement); if (userInput) { GM_setValue("customTextReplacement", userInput); customTextReplacement = userInput; replaceTextOnPage(); location.reload(); } } function resetTextReplacement() { GM_setValue("customTextReplacement", "Edio"); customTextReplacement = "Edio"; replaceTextOnPage(); location.reload(); } function replaceTextOnPage() { const elements = document.querySelectorAll("*:not(script):not(style):not(meta)"); elements.forEach(element => { if (element.childNodes.length) { element.childNodes.forEach(node => { if (node.nodeType === Node.TEXT_NODE) { node.textContent = node.textContent.replace(/Edio/g, customTextReplacement); location.reload(); } }); } }); } function updateFavicon() { if (userFaviconSrc) { let favicon = document.querySelector("link[rel*='icon']") || document.createElement("link"); favicon.type = "image/x-icon"; favicon.rel = "icon"; favicon.href = userFaviconSrc; document.head.appendChild(favicon); } } function replaceLogo() { document.querySelectorAll("img").forEach(img => { if (img.src === originalDesktopSrc && userDesktopLogoSrc) { img.src = userDesktopLogoSrc; } if (img.src === originalMobileSrc && userMobileLogoSrc) { img.src = userMobileLogoSrc; } if (img.src === userDesktopLogoSrc || img.src === userMobileLogoSrc) { img.style.borderRadius = "8px"; img.style.transition = "border-radius 0.2s ease-in-out"; img.addEventListener("mouseenter", () => { img.style.borderRadius = "3px"; }); img.addEventListener("mouseleave", () => { img.style.borderRadius = "8px"; }); } }); } GM_registerMenuCommand("Set Custom Opened Sidebar Logo", updateDesktopLogoSrc); GM_registerMenuCommand("Reset Opened Sidebar to Default", resetDesktopLogoSrc); GM_registerMenuCommand("Set Closed Sidebar Logo", updateMobileLogoSrc); GM_registerMenuCommand("Reset Closed Sidebar to Default", resetMobileLogoSrc); GM_registerMenuCommand("Set Tab Icon (Favicon)", updateFaviconSrc); GM_registerMenuCommand("Reset Tab Icon to Default", resetFaviconSrc); GM_registerMenuCommand("Set Tab Name", updateTabName); GM_registerMenuCommand("Reset Tab Name", resetTabName); GM_registerMenuCommand('Replace "Edio" Text', updateTextReplacement); GM_registerMenuCommand('Reset "Edio" Text', resetTextReplacement); const observer = new MutationObserver(mutations => { for (const mutation of mutations) { if (mutation.type === "childList" || mutation.type === "attributes") { replaceLogo(); replaceTextOnPage(); } } }); observer.observe(document.body, { childList: true, subtree: true, attributes: true }); replaceLogo(); updateFavicon(); document.title = userTabName; replaceTextOnPage(); })();