您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
记录所有 window._console.log 即使控制台被清除也能查看
// ==UserScript== // @name MyConsole // @namespace http://tampermonkey.net/ // @version 1.0 // @description 记录所有 window._console.log 即使控制台被清除也能查看 // @author Your Name // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; var renderLog = undefined; var clearLog = undefined; window._console = {}; window._console.log = function(...args) { if(!renderLog) return; renderLog({ type: 'log', args: args, timestamp: new Date() }); }; window._console.warn = function(...args) { if(!renderLog) return; renderLog({ type: 'warn', args: args, timestamp: new Date() }); }; window._console.error = function(...args) { if(!renderLog) return; renderLog({ type: 'error', args: args, timestamp: new Date() }); }; window._console.clear = function() { if(!clearLog) return; clearLog(); }; // 创建一个界面按钮来查看存储的日志 const createLogViewer = () => { // 创建按钮 const button = document.createElement('button'); button.innerText = '查看日志'; button.style.position = 'fixed'; button.style.bottom = '20px'; button.style.right = '20px'; button.style.padding = '10px 20px'; button.style.zIndex = 10000; button.style.backgroundColor = '#4CAF50'; button.style.color = 'white'; button.style.border = 'none'; button.style.borderRadius = '5px'; button.style.cursor = 'pointer'; button.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)'; button.title = '点击查看的 window._console.log 日志'; // 创建日志查看窗口 const logWindow = document.createElement('div'); logWindow.style.position = 'fixed'; logWindow.style.top = '50px'; logWindow.style.right = '20px'; logWindow.style.width = '400px'; logWindow.style.height = '300px'; logWindow.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; logWindow.style.color = 'white'; logWindow.style.padding = '10px'; logWindow.style.borderRadius = '5px'; logWindow.style.display = 'none'; logWindow.style.zIndex = 10000; logWindow.style.fontFamily = 'monospace'; logWindow.style.fontSize = '12px'; // 创建关闭按钮 const closeButton = document.createElement('button'); closeButton.innerText = '关闭'; closeButton.style.position = 'absolute'; closeButton.style.top = '10px'; closeButton.style.right = '10px'; closeButton.style.padding = '5px 10px'; closeButton.style.backgroundColor = '#f44336'; closeButton.style.color = 'white'; closeButton.style.border = 'none'; closeButton.style.borderRadius = '3px'; closeButton.style.cursor = 'pointer'; // 创建清空按钮 const clearButton = document.createElement('button'); clearButton.innerText = '清空'; clearButton.style.position = 'absolute'; clearButton.style.top = '10px'; clearButton.style.right = '60px'; clearButton.style.padding = '5px 10px'; clearButton.style.backgroundColor = '#4CAF50'; clearButton.style.color = 'white'; clearButton.style.border = 'none'; clearButton.style.borderRadius = '3px'; clearButton.style.cursor = 'pointer'; const logContent = document.createElement('div'); logContent.style.marginTop = '40px'; logContent.style.overflowY = 'scroll'; logContent.style.height = '230px'; logContent.style.userSelect = 'text'; // 添加事件监听器 button.addEventListener('click', () => { logWindow.style.display = 'block'; }); closeButton.addEventListener('click', () => { logWindow.style.display = 'none'; }); clearButton.addEventListener('click', () => { logContent.innerHTML = ''; }); // 添加内容到 logWindow logWindow.appendChild(closeButton); logWindow.appendChild(clearButton); // 创建日志内容容器 logWindow.appendChild(logContent); // 渲染日志内容 renderLog = (entry) => { const logEntry = document.createElement('div'); logEntry.style.marginBottom = '5px'; logEntry.style.padding = '5px'; logEntry.style.borderBottom = '1px solid #555'; logEntry.style.wordBreak = 'break-word'; const time = entry.timestamp.toLocaleTimeString(); const type = entry.type.toUpperCase(); const args = entry.args.map(arg => { if (typeof arg === 'object') { try { return JSON.stringify(arg); } catch (e) { return '[Object]'; } } return arg.toString(); }).join(' '); logEntry.innerHTML = `<strong>[${time}] ${type}:</strong> ${args}`; logContent.appendChild(logEntry); }; clearLog = () => { logContent.innerHTML = ''; } // 将按钮和日志窗口添加到页面 document.body.appendChild(button); document.body.appendChild(logWindow); }; // 延迟创建界面,确保页面加载完成 window.addEventListener('load', createLogViewer); })();