javascript - 控制台集成 : get number of errors/warnings thrown?

标签 javascript google-chrome webkit frontend

所以如果你打开检查器,你会得到这个(如果你不走运的话):

enter image description here

我正在构建一个显示调试信息的微型 JS 组件 - 有什么方法可以读取到目前为止遇到的错误和警告的数量吗?

我想出的一个 hacky 解决方案涉及一些技巧,用我自己的函数替换 console.(error|log|warn) 函数,但我还没有测试它是否有效对于所有情况(例如,在我拥有的代码之外)。

有更好的方法吗?

最佳答案

this 回答中所述,更改 native 对象/方法的行为通常不是一个好主意。但是,以下代码应该以一种相当无害的方式为您提供所需的内容:

// Add this IIFE to your codebase:
(() => {
	// Get all of the property names of the console:
	const methodsToTrack = Object.keys(window.console);
	// Create an object to collect total usage tallies in:
	const usageRegistry = {};
	for (let i = 0, j = methodsToTrack.length; i < j; i++) {
		let methodName = methodsToTrack[i];
		// If the property is not a method, don't touch it:
		if(typeof window.console[methodName] !== 'function') {
			continue;
		}
		// Cache the original console method here:
		let consoleMethod = window.console[methodName];
		// Overwrite console's method to increment the counter:
		window.console[methodName] = function () {
			// Defining registry properties here, so the registry only contains values for methods that were accessed:
			usageRegistry[methodName] = usageRegistry[methodName] || 0;
			// Execute the original method's behavior, capturing the returned value (if any) in a var, to return it at the end:
			const returnedValue = consoleMethod(...arguments);
			// Increment the usage registry for the executed method:
			usageRegistry[methodName]++;
			// Return the value the console's method would have returned, so the new method has the same signature as the old.
			return returnedValue;
		};

	}
	// Define a funciton to output the totals to a console log, then clean up after itself:
	window.showConsoleTallies = function () {
		window.console.log(usageRegistry);
		usageRegistry['log']--;
	}
})();

// Examples:
showConsoleTallies();
console.log('log 1');
console.error('error 1');
console.log('log 2');
console.warn('warn 1');
console.error('error 2');
console.log('log 3');
showConsoleTallies();

PS:这是 ECMA6 版本,但如果您希望将其编译为在旧浏览器中使用,请随时使用 run it through Babel

关于javascript - 控制台集成 : get number of errors/warnings thrown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884865/

相关文章:

javascript - 停止 setTimeout 延迟首次运行

css - 减少屏幕宽度后网站页脚上的链接将不起作用

html - 带列的列表对 Webkit/IE 中的错误元素提供悬停效果

windows - 适用于 Windows 的 iPhone 模拟器

javascript - 嵌入式 react 组件未在 html 页面中呈现/加载。 (网络包/通天塔)

javascript - Fancybox:更改地址栏中的 url 并链接到打开 Fancybox 的页面的链接

javascript - 跨域ajax查询

css - Chrome 中的流体布局问题

php、jquery问题: google chrome?

html - Webkit CSS3 列为其容器添加额外的填充。