您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Monitors your internet speed in Mbps and displays it in a movable panel at the top of the page. The panel can be toggled to show or hide by clicking anywhere on the page. The speed is updated every second. Ideal for tracking internet performance in real-time while browsing.
// ==UserScript== // @name Internet Speed Monitor // @namespace http://tampermonkey.net/ // @version 1.10 // @description Monitors your internet speed in Mbps and displays it in a movable panel at the top of the page. The panel can be toggled to show or hide by clicking anywhere on the page. The speed is updated every second. Ideal for tracking internet performance in real-time while browsing. // @author Your Name // @match *://*/* // @grant none // @license MIT // @supportURL https://github.com/yourusername/your-repository/issues // ==/UserScript== (function() { 'use strict'; // Create the speed display panel const speedPanel = document.createElement('div'); speedPanel.style.position = 'fixed'; speedPanel.style.top = '10px'; // Position at top speedPanel.style.right = '10px'; // Position at right speedPanel.style.zIndex = '9999'; speedPanel.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; // Semi-transparent background speedPanel.style.color = '#ffffff'; speedPanel.style.padding = '5px 10px'; speedPanel.style.borderRadius = '5px'; speedPanel.style.fontFamily = 'Arial, sans-serif'; speedPanel.style.fontSize = '12px'; // Smaller font size speedPanel.style.boxShadow = '0 0 5px rgba(0, 0, 0, 0.5)'; // Slight shadow for better visibility speedPanel.style.cursor = 'pointer'; // Pointer cursor to indicate it can be interacted with speedPanel.style.display = 'block'; // Ensure panel is visible initially document.body.appendChild(speedPanel); // Toggle visibility when clicking anywhere on the page document.addEventListener('click', () => { if (speedPanel.style.display === 'none') { speedPanel.style.display = 'block'; } else { speedPanel.style.display = 'none'; } }); async function calculateSpeed() { const startTime = Date.now(); try { // Test file with known size (adjust URL as needed) const response = await fetch('https://httpbin.org/bytes/1000000'); // 1MB file const endTime = Date.now(); const duration = (endTime - startTime) / 1000; // duration in seconds const fileSize = 1 * 1024 * 1024 * 8; // 1MB in bits const speed = fileSize / duration; // speed in bps const speedMbps = speed / (1024 * 1024); // convert to Mbps const speedMbpsFormatted = speedMbps.toFixed(2); // format to 2 decimal places speedPanel.textContent = `${speedMbpsFormatted} Mbps`; } catch (error) { speedPanel.textContent = 'Error calculating speed'; console.error('Error calculating speed:', error); } } // Update speed every 1 second setInterval(calculateSpeed, 1000); })();