您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
多UID选择查询(列表按钮形式)+合计列+美化浮动窗口+拖动功能!
// ==UserScript== // @name 夸克项目推广查询 // @namespace http://tampermonkey.net/ // @version 1.2.0 // @license MIT // @description 多UID选择查询(列表按钮形式)+合计列+美化浮动窗口+拖动功能! // @author PYY // @match https://dt.bd.cn/main/quark_list** // @match https://csj.sgj.cn/main/sfsjcx** // @icon https://www.google.com/s2/favicons?sz=64&domain=bd.cn // @grant none // ==/UserScript== (function () { 'use strict'; const uidList = [ { name: '我想我是海', uid: '100188018441' }, { name: '夸父资源家', uid: '100742154062' }, ]; function createUIDButtons() { const container = document.createElement('div'); container.id = 'quark-uid-selector'; container.innerHTML = ` <div class="uid-btn-list"> ${uidList.map(u => `<button class="uid-btn" data-uid="${u.uid}">${u.name}</button>`).join('')} </div> `; document.body.appendChild(container); container.querySelectorAll('.uid-btn').forEach(btn => { btn.addEventListener('click', () => { triggerQuery(btn.dataset.uid); }); }); // 默认触发第一个 setTimeout(() => { triggerQuery(uidList[0].uid); }, 1000); } function triggerQuery(uid) { const inputElement = document.querySelector('input[placeholder="请输入夸克UID查询"]'); if (inputElement) { inputElement.value = uid; inputElement.dispatchEvent(new Event('input', { bubbles: true })); } const submitDiv = document.querySelector('.submit'); if (submitDiv) { submitDiv.dispatchEvent(new MouseEvent('click', { bubbles: true })); } } function addHeaderColumn() { const header = document.querySelector('.row.table_header'); if (header && !header.querySelector('.custom-total-header')) { const headerCell = document.createElement('div'); headerCell.textContent = '合计'; headerCell.className = 'custom-total-header'; headerCell.style.fontWeight = 'bold'; headerCell.style.backgroundColor = '#f2f2f2'; header.appendChild(headerCell); } } function calculateTotal(cells) { const col1 = parseFloat(cells[1]?.textContent.trim()) || 0; const col2 = parseFloat(cells[2]?.textContent.trim()) || 0; const col3 = parseFloat(cells[3]?.textContent.trim()) || 0; const col4 = parseFloat(cells[4]?.textContent.trim()) || 0; return col1 * 7 + col2 * 3 + col3 * 0.3 + col4; } function addTotalColumnToRow(row) { if (row.querySelector('.custom-total-cell')) return; const cells = row.querySelectorAll('div'); const total = calculateTotal(cells); const sumDiv = document.createElement('div'); sumDiv.textContent = total.toFixed(2); sumDiv.className = 'custom-total-cell'; sumDiv.style.fontWeight = 'bold'; sumDiv.style.color = '#007bff'; row.appendChild(sumDiv); } function addTotalToAllRows() { const rows = document.querySelectorAll('.row.table_body_item'); rows.forEach(addTotalColumnToRow); } function observeLazyLoading() { const tableBody = document.querySelector('.table_body'); if (!tableBody) return; const observer = new MutationObserver(() => { addTotalColumnToRowHeader(); addTotalToAllRows(); }); observer.observe(tableBody, { childList: true, subtree: true }); } function addStyles() { const style = document.createElement('style'); style.textContent = ` .row > div { padding: 4px 8px; min-width: 60px; text-align: center; } #quark-uid-selector { position: fixed; bottom: 700px; right: 20px; background-color: #fff; border: 1px solid #ccc; border-radius: 10px; padding: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); font-family: "Helvetica Neue", sans-serif; z-index: 9999; cursor: move; } #quark-uid-selector .header { font-weight: bold; margin-bottom: 8px; color: #333; font-size: 14px; cursor: move; } .uid-btn-list { display: flex; flex-direction: column; gap: 6px; } .uid-btn { background-color: #007bff; color: #fff; border: none; border-radius: 6px; padding: 6px 10px; font-size: 13px; cursor: pointer; transition: background-color 0.3s; } .uid-btn:hover { background-color: #0056b3; } `; document.head.appendChild(style); } function enableDrag(id) { const el = document.getElementById(id); let offsetX = 0, offsetY = 0, isDown = false; el.addEventListener('mousedown', function (e) { if (!e.target.classList.contains('header')) return; isDown = true; offsetX = e.clientX - el.offsetLeft; offsetY = e.clientY - el.offsetTop; }); document.addEventListener('mouseup', () => isDown = false); document.addEventListener('mousemove', function (e) { if (!isDown) return; el.style.left = (e.clientX - offsetX) + 'px'; el.style.top = (e.clientY - offsetY) + 'px'; el.style.right = 'auto'; el.style.bottom = 'auto'; el.style.position = 'fixed'; }); } function addTotalColumnToRowHeader() { addHeaderColumn(); } // 初始化 window.addEventListener('load', () => { createUIDButtons(); addStyles(); setTimeout(() => { addTotalColumnToRowHeader(); addTotalToAllRows(); observeLazyLoading(); enableDrag('quark-uid-selector'); }, 1500); }); })();