【发布时间】:2012-11-19 05:55:51
【问题描述】:
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交互?
一个用例是拦截 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()。我还想找到一个与现有 Web 控制台/工具(如 Firebug)一起使用的解决方案,而不是创建自定义浏览器扩展或 Firebug 插件,但如果有人知道现有的解决方案,我会对它们感兴趣。
显然是这样的:
console = {
log: function (string) {
console.log('hey!');
}
}
console.log('hey!');
不起作用并导致无限递归。
【问题讨论】:
标签: javascript debugging firebug google-chrome-devtools