您需要先安装一个扩展,例如 篡改猴、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);
- })();