您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays current page term statuses stacked vertically
// ==UserScript== // @name Lute: Current Page Statuses Display // @version 20241019 // @description Displays current page term statuses stacked vertically // @author jamesdeluk // @match http://localhost:500*/read/* // @grant none // @namespace https://greasyfork.org/users/242246 // ==/UserScript== (function() { 'use strict'; window.addEventListener('load', function() { const statusNames = { 'status0': '?', 'status1': '1', 'status2': '2', 'status3': '3', 'status4': '4', 'status5': '5', 'status99': '✓', 'status98': 'X' }; const container = document.createElement('div'); container.style.position = "fixed"; container.style.left = "0"; container.style.top = "50%"; container.style.transform = "translateY(-50%)"; container.style.padding = "0.5em"; container.style.backgroundColor = "rgba(255, 255, 255, 0.8)"; // container.style.border = "1px solid #ccc"; container.style.zIndex = "1000"; container.style.fontFamily = "monospace"; container.style.fontSize = "12px"; document.body.appendChild(container); function updateStatusCounts() { container.innerHTML = ''; // Clear previous counts let totalStatusCount = 0; let statusCounts = Object.keys(statusNames).map(status => { let count = document.getElementsByClassName(status).length; totalStatusCount += count; return { status: statusNames[status], count }; }); let combinedStatusRange = ['status1', 'status2', 'status3', 'status4', 'status5']; let combinedStatusCount = combinedStatusRange.reduce((sum, status) => { return sum + document.getElementsByClassName(status).length; }, 0); let indexStatus5 = statusCounts.findIndex(item => item.status === '5'); statusCounts.splice(indexStatus5 + 1, 0, { status: 'L', count: combinedStatusCount }); let orderedAggregatedStatuses = ['?', 'L', 'O', 'X']; let detailedStatuses = ['1', '2', '3', '4', '5']; const totalDiv = document.createElement('div'); totalDiv.textContent = `∑: ${totalStatusCount}`; totalDiv.style.fontWeight = "bold"; container.appendChild(totalDiv); container.appendChild(document.createElement('hr')); orderedAggregatedStatuses.forEach(status => { let item = statusCounts.find(item => item.status === status); if (item) { const div = document.createElement('div'); div.textContent = `${status}: ${item.count}`; container.appendChild(div); } }); container.appendChild(document.createElement('hr')); detailedStatuses.forEach(status => { let item = statusCounts.find(item => item.status === status); if (item) { const div = document.createElement('div'); div.textContent = `${status}: ${item.count}`; container.appendChild(div); } }); } updateStatusCounts(); setInterval(updateStatusCounts, 3000); }); })();