您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows an FPS / Ping / Speed counter wherever you go!
当前为
// ==UserScript== // @name Global Debugger // @namespace https://greatest.deepsurf.us/en/scripts/450102-global-debugger // @version 1.0.1 // @description Shows an FPS / Ping / Speed counter wherever you go! // @author HYDROFLAME521 // @match *://*/* // @license CDDL-1.0 // @icon https://c.tenor.com/je-huTL1vwgAAAAi/loading-buffering.gif // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.5/dat.gui.min.js // ==/UserScript== 'use strict'; (function(window, e) { if ("object" === typeof exports && "undefined" !== typeof module) { module.exports = e(); } else { if ("function" === typeof define && define.amd) { define(e); } else { window.Stats = e(); } } })(this, function() { var init = function() { function addPanel(panel) { container.appendChild(panel.dom); return panel; } function showPanel(id) { var i = 0; for (; i < container.children.length; i++) { container.children[i].style.display = i === id ? "block" : "none"; } p = id; } var p = 0; var container = document.createElement("div"); container.style.cssText = "position:fixed;bottom:0;right:0;cursor:pointer;opacity:0.9;z-index:10000"; container.addEventListener("click", function(event) { event.preventDefault(); showPanel(++p % container.children.length); }, false); var beginTime = (performance || Date).now(); var prevTime = beginTime; var value = 0; var fpsPanel = addPanel(new init.Panel("FPS", "#0ff", "#002")); var msPanel = addPanel(new init.Panel("PING", "#0f0", "#020")); if (self.performance && self.performance.memory) { var memPanel = addPanel(new init.Panel("MB", "#f08", "#201")); } showPanel(0); return { REVISION : 16, dom : container, addPanel : addPanel, showPanel : showPanel, begin : function() { beginTime = (performance || Date).now(); }, end : function() { value++; var time = (performance || Date).now(); msPanel.update(time - beginTime, 200); if (time > prevTime + 1E3 && (fpsPanel.update(1E3 * value / (time - prevTime), 100), prevTime = time, value = 0, memPanel)) { var m = performance.memory; memPanel.update(m.usedJSHeapSize / 1048576, m.jsHeapSizeLimit / 1048576); } return time; }, update : function() { beginTime = this.end(); }, domElement : container, setMode : showPanel }; }; init.Panel = function(label, container, position) { var t = Infinity; var val = 0; var round = Math.round; var r = round(window.devicePixelRatio || 1); var w = 80 * r; var h = 48 * r; var right = 3 * r; var padding = 2 * r; var x = 3 * r; var y = 15 * r; var width = 74 * r; var height = 30 * r; var elem = document.createElement("canvas"); elem.width = w; elem.height = h; elem.style.cssText = "width:200px;height:120px"; var context = elem.getContext("2d"); context.font = "bold " + 11 * r + "px Helvetica,Arial,sans-serif"; context.textBaseline = "top"; context.fillStyle = position; context.fillRect(0, 0, w, h); context.fillStyle = container; context.fillText(label, right, padding); context.fillRect(x, y, width, height); context.fillStyle = position; context.globalAlpha = .9; context.fillRect(x, y, width, height); return { dom : elem, update : function(i, radius) { t = Math.min(t, i); val = Math.max(val, i); context.fillStyle = position; context.globalAlpha = 1; context.fillRect(0, 0, w, y); context.fillStyle = container; context.fillText(round(i) + " " + label + " (" + round(t) + "-" + round(val) + ")", right, padding); context.drawImage(elem, x + r, y, width - r, height, x, y, width - r, height); context.fillRect(x + width - r, y, r, height); context.fillStyle = position; context.globalAlpha = .9; context.fillRect(x + width - r, y, r, round((1 - i / radius) * height)); } }; }; return init; }); (function() { 'use strict'; const stats = new Stats(); const statsParentNode = document.body; statsParentNode.appendChild(stats.dom); requestAnimationFrame(function loop() { stats.update(); requestAnimationFrame(loop); }); })();