您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show full dates when hovering over countdowns
// ==UserScript== // @name BotB: Show full dates when hovering over countdowns // @namespace https://battleofthebits.com/barracks/Profile/uart/ // @version 2024-08-30 // @description Show full dates when hovering over countdowns // @author uart @ botb // @license CC0 // @match *://battleofthebits.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=battleofthebits.com // @grant none // @run-at document-body // ==/UserScript== (function() { 'use strict'; /* LOCALE: override locale to use for date formatting. Leave empty for system locale. */ const LOCALE = "pl-PL"; function handleCountdownDates(root) { const now = new Date(); const countdowns = root.getElementsByClassName("countdown"); var countdownHTML, countdownSeconds, countdownDate; for (var i = 0; i < countdowns.length; i++) { countdownHTML = countdowns[i]; countdownSeconds = countdownHTML.getAttribute("data-countdown"); countdownDate = new Date(now.getTime() + (countdownSeconds * 1000)); if (LOCALE) { countdownHTML.setAttribute("title", countdownDate.toLocaleString(LOCALE)); } else { countdownHTML.setAttribute("title", countdownDate.toLocaleString()); } } } handleCountdownDates(document); /* Set up a MutationObserver on ajaxContent in case it gets updated with new countdowns * (see e.g. user buttons on homepage). */ const observer = new MutationObserver(function(mutationList, observer) { var done = new Array(); for (const mutation of mutationList) { if (!done.includes(mutation.target)) { handleCountdownDates(mutation.target); done.push(mutation.target); } }; }); const ajaxContents = document.getElementsByClassName("ajaxContent"); for (var i = 0; i < ajaxContents.length; i++) { observer.observe(ajaxContents[i], { childList: true, subtree: true }); } })();