debug

用于调试的脚本库

当前为 2018-01-28 提交的版本,查看 最新版本

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

  1. // ==UserScript==
  2. // @name debug
  3. // @namespace https://github.com/yeomanye
  4. // @version 0.9
  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) ? myDebugger.debugD : debugMode;
  15. type = type || 'log';
  16. /**
  17. * 创建的分组打印日志
  18. * @param {bool} debugMode 是否启用日志
  19. */
  20. var log = function() {
  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. log.debugMode = debugMode;
  29. /**
  30. * 初始化操作
  31. */
  32. log.init = function(){
  33. if (!log.nFirst) {
  34. log.nFirst = true;
  35. log.groupName = log.groupName || groupName;
  36. console.group('%c' + log.groupName, styleStr);
  37. }
  38. }
  39. /**
  40. * 打印对象
  41. * @param {string} desc 对象描述
  42. * @param {object} obj 对象数据
  43. */
  44. log.logObj = function(desc, obj) {
  45. log.init();
  46. if (this.debugMode) {
  47. var argArr = [].slice.call(arguments);
  48. var desc = argArr.shift();
  49. argArr.unshift('color:green');
  50. argArr.unshift(`%c[${desc}]`);
  51.  
  52. console.log.apply(console,argArr);
  53. }
  54. }
  55. /**
  56. * 打印数组
  57. * @param {string} desc 数组描述
  58. * @param {array} arr 数组类型
  59. */
  60. log.logArr = function(desc, arr) {
  61. log.init();
  62. if (this.debugMode) {
  63. var argArr = [].slice.call(arguments);
  64. var desc = argArr.shift();
  65. console.group(`%c[${desc}]`, 'color:blue;font-size:13px');
  66. argArr.forEach(item=>{
  67. console.table(item);
  68. });
  69. console.groupEnd();
  70. }
  71. }
  72. /**
  73. * 重置分组日志
  74. * @param {string} groupName 日志名
  75. * @param {Boolean} debugMode 是否启用日志
  76. */
  77. log.reset = function(groupName, debugMode) {
  78. console.groupEnd();
  79. log.nFirst = false;
  80. log.debugMode = (debugMode === undefined) || true;
  81. log.groupName = groupName || this.groupName;
  82. }
  83. /**
  84. * 断言
  85. * @param {bool} expr 表达式
  86. * @param {string} msg 消息
  87. * @param {bool} debugMode 是否启用
  88. */
  89. log.assert = function(expr,msg,debugMode){
  90. debugMode = (debugMode === undefined) || this.debugMode;
  91. if(debugMode){
  92. console.assert(expr,msg);
  93. }
  94. }
  95. /**
  96. * 强调 用于突出显示的场合
  97. * @param {string} desc 强调内容
  98. * @param {string} bgColor 颜色
  99. */
  100. log.em = function(desc, bgColor) {
  101. log.init();
  102. bgColor = bgColor || 'green';
  103. if (debugMode) {
  104. console.log(`%c${desc}`, `font-size:18px;background-color:${bgColor};color:white;padding:4px`);
  105. }
  106. }
  107. return log;
  108. }
  109.  
  110. // 当参数为true时开启调试
  111. var debugTrue = function(debugMode) {
  112. debugMode = (debugMode === undefined) ? myDebugger.debugD : debugMode;
  113. if (debugMode) debugger;
  114. }
  115.  
  116. var myDebugger = {
  117. consoleFactory: consoleFactory,
  118. debugTrue: debugTrue,
  119. debugD:debugD
  120. };
  121.  
  122. context.myDebugger = myDebugger;
  123.  
  124. })(window);