您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Convert mice weight to metric.
当前为
// ==UserScript== // @name 🐭️ MouseHunt - Metric // @version 1.1.0 // @description Convert mice weight to metric. // @license MIT // @author bradp // @namespace bradp // @match https://www.mousehuntgame.com/* // @icon https://i.mouse.rip/mouse.png // @grant none // @run-at document-end // @require https://cdn.jsdelivr.net/npm/[email protected] // ==/UserScript== ((function () { 'use strict'; /** * Do something when the overlay is shown or hidden. * * @param {Object} callbacks * @param {Function} callbacks.show The callback to call when the overlay is shown. * @param {Function} callbacks.hide The callback to call when the overlay is hidden. * @param {Function} callbacks.change The callback to call when the overlay is changed. */ const onOverlayChange = (callbacks) => { const observer = new MutationObserver(() => { if (callbacks.change) { callbacks.change(); } if (document.getElementById('overlayBg').classList.length > 0) { if (callbacks.show) { callbacks.show(); } } else if (callbacks.hide) { callbacks.hide(); } }); observer.observe( document.getElementById('overlayBg'), { attributes: true, attributeFilter: ['class'] } ); }; /** * Convert the text in the given element to metric. */ const replaceImperialWithMetric = () => { const elements = document.querySelectorAll('.journal .entry .journalbody .journaltext'); if (! elements) { return; } elements.forEach((element) => { // Grab the lb. and oz. values. const lb = element.innerText.match(/(\d+? )lb./i); const oz = element.innerText.match(/(\d+? )oz./i); if (! (lb || oz)) { return; } // Convert the lb. and oz. values to metric. const lbValue = lb ? lb[ 1 ] : 0; const ozValue = oz ? oz[ 1 ] : 0; const totalWeight = parseInt(lbValue) + (parseInt(ozValue) / 16); const totalWeightMetric = (Math.round((totalWeight * 0.45359237) * 100) / 100).toString(); // Replace the lb. and oz. values with the metric values. element.innerHTML = element.innerHTML.replace(/(\d+? lb.\s)?(\d+? oz.)/i, totalWeightMetric + ' kg. '); }); }; /** * Replace text in the mouse overlay / mouse page. */ const replaceMouseOverlay = () => { const elements = document.querySelectorAll('.mouseView-statsContainer-block-padding table tr td'); const avgIndex = Array.from(elements).findIndex((element) => element.innerText.match(/Avg. Weight:/i)); const heaviestIndex = Array.from(elements).findIndex((element) => element.innerText.match(/Heaviest:/i)); if (avgIndex !== -1) { if (elements[ avgIndex + 1 ]) { replaceImperialWithMetric([elements[ avgIndex + 1 ]]); } } if (heaviestIndex !== -1) { if (elements[ heaviestIndex + 1 ]) { replaceImperialWithMetric([elements[ heaviestIndex + 1 ]]); } } }; replaceImperialWithMetric(); onOverlayChange({ show: () => { // Run immediately, then again in quick succession to make sure the weight is updated. replaceMouseOverlay(); setTimeout(replaceMouseOverlay, 250); setTimeout(replaceMouseOverlay, 500); } }); migrateUserscript('🐭️ MouseHunt - Metric', 'https://greasyfork.org/en/scripts/449840-mousehunt-metric'); })());