Mozilla开发者网络page对浏览器提供的Javascript console
对象说:“Note: At least in Firefox, if a page defines a console object, that object overrides the one built into Firefox.
”。有什么方法可以覆盖这个对象,但仍然与浏览器的Web Console交互?创建一个自定义的“控制台”对象与浏览器中的Web控制台交互以进行自定义调试器
一个用例是拦截console.log()
调用并执行额外的操作或采用不同的参数(例如日志分类),同时保留使用Firebug或Google Chrome Inspect Element等工具登录到控制台时提供的行号/文件信息。最匹配的答案,我能找到的是:Intercepting web browser console messages,但它并没有深入到通过自定义控制台对象与Web控制台交互,并使用类似
debug.log = function(string, logLevel) {
checkLogLevel(logLevel); // return false if environment log setting is below logLevel
var changedString = manipulate(string);
console.log(changedString);
}
一个自定义的调试服务不保留线函数的号码/文件源调用debug.log()
。一种选择是用console.trace()
做一些事情,然后爬上追踪堆栈的一层,但我很好奇首先扩展console.log()
。我还想找到一个可以与Firebug等现有Web控制台/工具配合使用的解决方案,而不是创建自定义浏览器扩展或Firebug插件,但如果有人知道现有的解决方案,我会对他们感兴趣。
显然是这样的:
console = {
log: function (string) {
console.log('hey!');
}
}
console.log('hey!');
将无法正常工作,并在无限递归的结果。
http://tobyho.com/2012/07/27/taking-over-console-log/ –