您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Abbreviate big numbers in the event log using K,M,B suffixes.
当前为
// ==UserScript== // @name Warcraft Logs Number Abbreviator // @namespace athei // @author Alexander Theißen // @version 1.0.0 // @description Abbreviate big numbers in the event log using K,M,B suffixes. // @match http://*.warcraftlogs.com/* // @match https://*.warcraftlogs.com/* // @grant none // @license GPL3 // ==/UserScript== // Process nodes that exist at load time of this script. if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', processNodes); } else { processNodes(); } // Process nodes that are added after this script is run. const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { // Only process element nodes. if (node.nodeType === Node.ELEMENT_NODE) { // If the added node itself is a span, process it. if (node.tagName.toLowerCase() === 'span') { processElement(node); } // Process any span descendants of the added node. processNodes(node); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); function processNodes(root = document) { root.querySelectorAll('.event-description-cell span').forEach(span => { processElement(span); }); } // Process a given element if its text is a pure number. function processElement(el) { // There are other characters in the cell with the raw numbers // in case of healing or dots. let newText = el.textContent.replace(/(\d+(\.\d+)?)/g, function(match) { let num = parseInt(match); if (num >= 1000) { return abbreviateNumber(num); } else { return match; } }); if (newText !== el.textContent) { el.textContent = newText; } } // Abbreviates numbers (e.g., 2358046 → 2.4M) if they're large enough. function abbreviateNumber(num) { if (num >= 1e9) return (num / 1e9).toFixed(1) + "B"; if (num >= 1e6) return (num / 1e6).toFixed(1) + "M"; if (num >= 1e3) return (num / 1e3).toFixed(1) + "K"; return num.toString(); }