您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hiển thị tốc độ mạng (download/upload) lên màn hình trong thời gian thực.
// ==UserScript== // @name Network Speed Monitor // @namespace http://tampermonkey.net/ // @version 0.1 // @description Hiển thị tốc độ mạng (download/upload) lên màn hình trong thời gian thực. // @author Hà Trọng Nguyễn (htrnguyen) // @match *://*/* // @grant none // @icon https://github.com/htrnguyen/Network-Speed-Monitor/raw/main/Network-Speed-Monitor-Logo.png // @license MIT // @homepageURL https://github.com/htrnguyen/Network-Speed-Monitor // @supportURL https://github.com/htrnguyen/Network-Speed-Monitor/issues // ==/UserScript== (function () { 'use strict'; // Cấu hình const CONFIG = { position: 'bottom-left', // Vị trí hiển thị: 'bottom-left', 'bottom-right', 'top-left', 'top-right' backgroundColor: 'rgba(0, 0, 0, 0.7)', // Màu nền textColor: 'white', // Màu chữ fontSize: '12px', // Kích thước chữ padding: '5px', // Khoảng cách đệm zIndex: 9999, // Độ ưu tiên hiển thị updateInterval: 1000, // Thời gian cập nhật (ms) }; // Tạo div để hiển thị tốc độ mạng const speedDiv = document.createElement('div'); speedDiv.style.position = 'fixed'; speedDiv.style.zIndex = CONFIG.zIndex; speedDiv.style.backgroundColor = CONFIG.backgroundColor; speedDiv.style.color = CONFIG.textColor; speedDiv.style.padding = CONFIG.padding; speedDiv.style.fontSize = CONFIG.fontSize; speedDiv.style.borderRadius = '3px'; speedDiv.style.display = 'flex'; speedDiv.style.alignItems = 'center'; speedDiv.style.gap = '5px'; // Đặt vị trí hiển thị switch (CONFIG.position) { case 'bottom-right': speedDiv.style.bottom = '0'; speedDiv.style.right = '0'; break; case 'top-left': speedDiv.style.top = '0'; speedDiv.style.left = '0'; break; case 'top-right': speedDiv.style.top = '0'; speedDiv.style.right = '0'; break; default: // bottom-left speedDiv.style.bottom = '0'; speedDiv.style.left = '0'; break; } // Thêm logo (tùy chọn) const logo = document.createElement('img'); logo.src = 'https://github.com/htrnguyen/Network-Speed-Monitor/raw/main/Network-Speed-Monitor-Logo.png'; logo.style.width = '16px'; logo.style.height = '16px'; logo.style.borderRadius = '50%'; speedDiv.appendChild(logo); // Thêm thông tin tác giả (tùy chọn) const authorInfo = document.createElement('span'); authorInfo.textContent = 'by Hà Trọng Nguyễn (htrnguyen)'; speedDiv.appendChild(authorInfo); // Thêm div vào body document.body.appendChild(speedDiv); // Biến lưu trữ dữ liệu let totalReceived = 0; let totalSent = 0; // Hàm định dạng byte sang KB/MB function formatBytes(bytes) { if (bytes < 1024) return `${bytes} B`; if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(2)} KB`; return `${(bytes / (1024 * 1024)).toFixed(2)} MB`; } // Hàm cập nhật tốc độ mạng function updateSpeed() { const resources = performance.getEntriesByType('resource'); const now = performance.now(); // Tính toán dữ liệu nhận trong 1 giây const receivedThisSecond = resources.reduce((acc, entry) => { if (now - entry.responseEnd < 1000) acc += entry.transferSize; return acc; }, 0); totalReceived += receivedThisSecond; // Hiển thị thông tin speedDiv.textContent = `↓ ${formatBytes(receivedThisSecond)}/s | ↑ ${formatBytes(totalSent)}`; } // Theo dõi sự kiện upload file document.body.addEventListener('change', (event) => { if (event.target.tagName === 'INPUT' && event.target.type === 'file') { const files = event.target.files; for (let file of files) totalSent += file.size; } }); // Cập nhật tốc độ mạng mỗi giây setInterval(updateSpeed, CONFIG.updateInterval); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址