debug

用于调试的脚本库

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

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

  1. // ==UserScript==
  2. // @name debug
  3. // @namespace https://github.com/yeomanye
  4. // @version 0.7.0
  5. // @include *://*
  6. // @description 用于调试的脚本库
  7. // @author Ming Ye
  8. // ==/UserScript==
  9.  
  10. (function(context) {
  11. var debugD = true; //debug默认设置
  12. //创建分组打印
  13. var consoleFactory = function(groupName, styleStr, type, debugMode) {
  14. debugMode = (debugMode === undefined) || debugD;
  15. type = type || 'log';
  16. /**
  17. * 创建的分组打印日志
  18. * @param {bool} debugMode 是否启用日志
  19. */
  20. var log = function(debugMode) {
  21. //初始化操作
  22. log.init();
  23. if (log.debugMode) {
  24. var argArr = Array.prototype.slice.apply(arguments);
  25. console[type].apply(null, argArr);
  26. }
  27. }
  28. /**
  29. * 初始化操作
  30. */
  31. log.init = function(){
  32. if (!log.nFirst) {
  33. log.nFirst = true;
  34. log.debugMode = debugMode;
  35. log.groupName = log.groupName || groupName;
  36. if(log.groupNum){
  37. while(log.groupNum--)
  38. console.groupEnd();
  39. }
  40. log.groupNum = 1;
  41. console.group('%c' + log.groupName, styleStr);
  42. }
  43. }
  44. log.head = function(msg,isClose){
  45. if(isClose) console.groupEnd();
  46. console.group('%c'+msg,'font-size:15px')
  47. }
  48. /**
  49. * 打印对象
  50. * @param {string} desc 对象描述
  51. * @param {object} obj 对象数据
  52. */
  53. log.logObj = function(desc, obj, debugMode) {
  54. log.init();
  55. debugMode = (debugMode === undefined) || this.debugMode;
  56. if (debugMode) {
  57. console.group('%c' + desc, 'color:green;font-size:13px');
  58. console.log(obj);
  59. console.groupEnd();
  60. }
  61. }
  62. /**
  63. * 打印数组
  64. * @param {string} desc 数组描述
  65. * @param {array} arr 数组类型
  66. */
  67. log.logArr = function(desc, arr, debugMode) {
  68. log.init();
  69. debugMode = (debugMode === undefined) || this.debugMode;
  70. if (debugMode) {
  71. console.group('%c' + desc, 'color:blue;font-size:13px');
  72. console.table(arr);
  73. console.groupEnd();
  74. }
  75. }
  76. /**
  77. * 重置分组日志
  78. * @param {string} groupName 日志名
  79. * @param {Boolean} debugMode 是否启用日志
  80. */
  81. log.reset = function(groupName, debugMode) {
  82. log.nFirst = false;
  83. log.debugMode = (debugMode === undefined) || true;
  84. log.groupName = groupName || this.groupName;
  85. }
  86. /**
  87. * 断言
  88. * @param {bool} expr 表达式
  89. * @param {string} msg 消息
  90. * @param {bool} debugMode 是否启用
  91. */
  92. log.assert = function(expr,msg,debugMode){
  93. debugMode = (debugMode === undefined) || this.debugMode;
  94. if(debugMode){
  95. console.assert(expr,msg);
  96. }
  97. }
  98. return log;
  99. }
  100.  
  101. // 当参数为true时开启调试
  102. var debugTrue = function(debugMode) {
  103. debugMode = (debugMode === undefined) || debugD;
  104. return function() {
  105. if (debugMode) debugger;
  106. }
  107. }
  108.  
  109. context.myDebugger = {
  110. consoleFactory: consoleFactory,
  111. debugTrue: debugTrue
  112. };
  113.  
  114. })(window);