您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
It adds a persistent stopwatch to any page that continues even if you reload the page
// ==UserScript== // @name Persistent Floating Stopwatch // @namespace http://tampermonkey.net/ // @version 0.1 // @description It adds a persistent stopwatch to any page that continues even if you reload the page // @author b4kt // @match *://*/* // @grant none // @license GNU GPLv3 // ==/UserScript== (function() { 'use strict'; // Add the HTML and CSS to the page const stopwatchHTML = ` <div id="stopwatch" style=" position: fixed; top: 10px; right: 10px; z-index: 9999; background-color: #f9f9f9; border: 1px solid #ccc; padding: 8px; border-radius: 5px; font-family: monospace; font-size: 14px; text-align: center; "> <div id="stopwatch-time">00:00:00</div> <button id="stopwatch-start">Start</button> <button id="stopwatch-stop" style="display:none;">Stop</button> <button id="stopwatch-reset">Reset</button> </div> `; document.body.insertAdjacentHTML('beforeend', stopwatchHTML); // Stopwatch functionality let startTime; let elapsedTime = localStorage.getItem('elapsedTime') ? parseInt(localStorage.getItem('elapsedTime')) : 0; let timerInterval; function updateTime() { elapsedTime = Date.now() - startTime; localStorage.setItem('elapsedTime', elapsedTime); const timeString = new Date(elapsedTime).toISOString().substr(11, 8); document.getElementById('stopwatch-time').textContent = timeString; } function startStopwatch() { startTime = Date.now() - elapsedTime; timerInterval = setInterval(updateTime, 100); document.getElementById('stopwatch-start').style.display = 'none'; document.getElementById('stopwatch-stop').style.display = ''; localStorage.setItem('stopwatchRunning', 'true'); } function stopStopwatch() { clearInterval(timerInterval); document.getElementById('stopwatch-start').style.display = ''; document.getElementById('stopwatch-stop').style.display = 'none'; localStorage.setItem('stopwatchRunning', 'false'); } function resetStopwatch() { clearInterval(timerInterval); elapsedTime = 0; localStorage.setItem('elapsedTime', elapsedTime); document.getElementById('stopwatch-time').textContent = '00:00:00'; document.getElementById('stopwatch-start').style.display = ''; document.getElementById('stopwatch-stop').style.display = 'none'; localStorage.setItem('stopwatchRunning', 'false'); } document.getElementById('stopwatch-start').addEventListener('click', startStopwatch); document.getElementById('stopwatch-stop').addEventListener('click', stopStopwatch); document.getElementById('stopwatch-reset').addEventListener('click', resetStopwatch); // Set the initial state of the stopwatch based on stored data if (elapsedTime > 0) { const timeString = new Date(elapsedTime).toISOString().substr(11, 8); document.getElementById('stopwatch-time').textContent = timeString; } if (localStorage.getItem('stopwatchRunning') === 'true') { startStopwatch(); } else { stopStopwatch(); } })();