您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Count the occurrences of the $ symbol on a webpage and display the count and total in a draggable box
// ==UserScript== // @name Money Calculator // @namespace http://tampermonkey.net/ // @version 1.3 // @description Count the occurrences of the $ symbol on a webpage and display the count and total in a draggable box // @author You // @match *://*/* // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; GM_addStyle(` #dollarCountContainer { position: fixed; top: 10px; left: 10px; padding: 10px; background: #ccebff; /* Light Blue */ border: 1px solid #ccc; z-index: 9999; cursor: move; min-width: 250px; } #dollarCountContainer input { width: 100%; font-weight: bold; font-size: 14px; } #dollarCountContainer a { color: #00cc00; /* Green */ font-weight: bold; font-size: 14px; text-decoration: none; } #dollarCountContainer a:hover { text-decoration: underline; } `); // Function to count occurrences of the $ symbol and display the count and total in a draggable box function countDollars() { // Get all text content on the page const pageText = document.body.innerText; // Find all occurrences of the $ symbol with optional commas and decimals const matches = pageText.match(/\$\d{1,3}(,\d{3})*(\.\d{1,2})?/g) || []; // Count and calculate the total value const dollarCount = matches.length; const totalValue = matches.reduce((sum, match) => sum + parseFloat(match.slice(1).replace(/,/g, '')), 0); // Display the count and total value in a draggable box if (!document.getElementById('dollarCountContainer')) { // If the container doesn't exist, create it const container = document.createElement('div'); container.id = 'dollarCountContainer'; // Create a title bar for dragging const titleBar = document.createElement('div'); titleBar.style.width = '100%'; titleBar.style.height = '20px'; titleBar.style.backgroundColor = '#ddd'; titleBar.style.cursor = 'move'; titleBar.innerText = 'Drag here'; // Create a signature on the right side const signature = document.createElement('div'); signature.style.float = 'right'; signature.style.paddingRight = '5px'; signature.style.color = '#00cc00'; // Green signature.innerHTML = 'By <a href="https://twitter.com/l1ackoder" target="_blank">@l1ackoder</a>'; titleBar.appendChild(signature); container.appendChild(titleBar); // Create a text box to display the count and total bounty const textBox = document.createElement('input'); textBox.type = 'text'; // Check if the total value is greater than or equal to 1000, then display in "k" format if (totalValue >= 1000) { textBox.value = `Count: ${dollarCount} | Total: $${(totalValue / 1000).toFixed(2)}k`; } else { textBox.value = `Count: ${dollarCount} | Total: $${totalValue.toFixed(2)}`; } textBox.readOnly = true; container.appendChild(textBox); // Make the container draggable let isDragging = false; let offsetX, offsetY; titleBar.addEventListener('mousedown', (e) => { isDragging = true; offsetX = e.clientX - container.getBoundingClientRect().left; offsetY = e.clientY - container.getBoundingClientRect().top; }); document.addEventListener('mousemove', (e) => { if (isDragging) { container.style.left = e.clientX - offsetX + 'px'; container.style.top = e.clientY - offsetY + 'px'; } }); document.addEventListener('mouseup', () => { isDragging = false; }); // Append the container to the body document.body.appendChild(container); } else { // If the container exists, update the text box content const textBox = document.querySelector('#dollarCountContainer input'); // Check if the total value is greater than or equal to 1000, then display in "k" format if (totalValue >= 1000) { textBox.value = `Count: ${dollarCount} | Total: $${(totalValue / 1000).toFixed(2)}k`; } else { textBox.value = `Count: ${dollarCount} | Total: $${totalValue.toFixed(2)}`; } } } // Execute the countDollars function when the page has finished loading window.addEventListener('load', countDollars); // Listen for changes to the DOM (dynamic updates) and update the count const observer = new MutationObserver(countDollars); observer.observe(document.body, { subtree: true, childList: true }); })();