Greasy Fork

Greasy Fork is available in English.

debug

用于调试的脚本库

当前为 2017-11-23 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/34143/232646/debug.js

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         debug
// @namespace    https://github.com/yeomanye
// @version      0.6.0
// @include      *://*
// @description  用于调试的脚本库
// @author       Ming Ye
// ==/UserScript==

(function(context) {
    var debugD = true; //debug默认设置
    //创建分组打印
    var consoleFactory = createGroupDebug(groupName, styleStr, type, debugMode) {
        debugMode = (debugMode === undefined) || debugD;
        type = type || 'log';
        /**
         * 创建的分组打印日志
         * @param  {bool} debugMode 是否启用日志
         */
        var log = function(debugMode) {
            //初始化操作
            if (!log.nFirst) {
                log.nFirst = true;
                log.debugMode = debugMode;
                log.groupName = log.groupName || groupName;
                console.groupEnd();
                console.group('%c' + log.groupName, styleStr);
            }
            if (log.debugMode) {
                var argArr = Array.prototype.slice.apply(arguments);
                console[type].apply(null, argArr);
            }
        }
        /**
         * 打印对象
         * @param  {string} desc 对象描述
         * @param  {object} obj  对象数据
         */
        log.logObj = function(desc, obj, debugMode) {
            debugMode = (debugMode === undefined) || this.debugMode;
            if (debugMode) {
                console.group('%c' + desc, 'color:green;font-size:16px');
                console.log(obj);
                console.groupEnd();
            }
        }
        /**
         * 打印数组
         * @param  {string} desc 数组描述
         * @param  {array} arr  数组类型
         */
        log.logArr = function(desc, arr, debugMode) {
            debugMode = (debugMode === undefined) || this.debugMode;
            if (debugMode) {
                console.group('%c' + desc, 'color:blue;font-size:16px');
                console.table(arr);
                console.groupEnd();
            }
        }
        /**
         * 重置分组日志
         * @param  {string}  groupName 日志名
         * @param  {Boolean} debugMode 是否启用日志
         */
        log.reset = function(groupName, debugMode) {
            log.nFirst = false;
            log.debugMode = (debugMode === undefined) || true;
            log.groupName = groupName || this.groupName;
        }
        /**
         * 断言
         * @param  {bool} expr      表达式
         * @param  {string} msg       消息
         * @param  {bool} debugMode 是否启用
         */
        log.assert = function(expr,msg,debugMode){
            debugMode = (debugMode === undefined) || this.debugMode;
            if(debugMode){
                console.assert(expr,msg);
            }
        }
        return log;
    }

    // 当参数为true时开启调试
    var debugTrue = function(debugMode) {
        debugMode = (debugMode === undefined) || debugD;
        return function() {
            if (debugMode) debugger;
        }
    }

    context.myDebugger = {
        consoleFactory: consoleFactory,
        debugTrue: debugTrue
    };

})(window);