您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds colors to some of the items in the Smart Assembly Explorer
// ==UserScript== // @name EvE Frontier Smart-Assembly-Base View Enhancer // @namespace http://tampermonkey.net/ // @version 2025-07-23_02:12 // @description Adds colors to some of the items in the Smart Assembly Explorer // @author Rho // @match https://smart-assembly-base.stillness.evefrontier.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=evefrontier.com // @grant none // @license GNU GPL v3.0 // ==/UserScript== (function() { 'use strict'; console.info("EvE Frontier Smart-Assembly-Base View Enhancer is running."); /** MUTATION OBSERVATION PACKAGE */ let reactionToMutationsTimeout = null; let mutationObserver = null; startObservingDocumentBodyForMutations(); function startObservingDocumentBodyForMutations(){ mutationObserver = new MutationObserver(handleNewMutations); mutationObserver.observe(document.body, { childList: true, subtree: true, attributes: true }); } function handleNewMutations(mutations){ scheduleReactionToMutations(); } /** Schedules running the reaction, cancels previously scheduled reactions if less than 100ms passed. This enables throttling. */ function scheduleReactionToMutations() { console.debug("Scheduling a Reaction to a mutations set"); clearTimeout(reactionToMutationsTimeout); reactionToMutationsTimeout = setTimeout(() => { reactToMutationsSet(); }, 100); } /** Runs all actions in reaction to a finisheed set of mutations */ function reactToMutationsSet() { mutationObserver.disconnect(); // STOP THE MUTATION OBSERVER WHILE WE WORK console.debug("Reacting to a mutations set"); enhanceTheStorageListView(); startObservingDocumentBodyForMutations(); // RESTART THE MUTATION OBSERVER } /** // MUTATION OBSERVATION PACKAGE */ function enhanceTheStorageListView(){ let listOfSpans = document.querySelectorAll('.grid.w-full.text-neutral.text-sm span') listOfSpans.forEach((span)=>{ const SPACE = " "; const DASH = "-"; let itemName = span.innerText.toLowerCase().split(SPACE).join(DASH); const numbersOnly = /^[0-9]*$/g if(itemName.match(numbersOnly)){ return; // ONLY NMUMBERS HERE } else { const forbiddenCharacters = /[\(\)]/g const NOTHING = ""; let className = itemName.replace(forbiddenCharacters, NOTHING); span.classList.add(className); // console.log(`Processed: ${itemName}`); } }) } function addStylesToBody(styles){ let styleElem = document.createElement('style'); styleElem.textContent = styles; document.head.append(styleElem); } const itemTypeStyles = ` .carbon-weave, .carbon-weave + span { background: #a7a7a7; color: black; } .reinforced-alloys, .reinforced-alloys + span { background: #42bdd3; color: black; } .thermal-composites, .thermal-composites + span { background: #d9865f; color: black; } `; addStylesToBody(itemTypeStyles); })();