注意:Firebug是Firebug扩展和/或Webkit开发人员工具。
假设调用文件我是指控制台输出右侧的链接,指向调用输出函数(如console.log)的位置。
当你有错误消息传递等的统一处理程序时,这就成了一个问题,因此所有的console.log调用都来自同一个文件&行号。
有没有办法伪造这些信息?或者将这样的链接(指向行号)烘焙到firebug控制台日志中(假设有一个堆栈跟踪)?只需在任何日志的末尾添加文件名和行号,就会给控制台输出带来噪音,使其变得混乱。
答案 0 :(得分:2)
大多数现代浏览器都定义了console.log函数。如何而不是编写自己的错误处理程序,你继续调用console.log到处都有错误。然后,对于没有定义console.log的浏览器,您可以使用您想要的任何内容自己定义它。例如,如果你想警告IE中的错误(或没有安装firebug的FF等等)你可以使用这段代码:
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="throwError()">
Throw Error</button>
<script type="text/javascript">
function throwError() {
console.log("error here!");
}
if (!window.console) {
window.console = {
log: function(e) {
alert(e);
}
};
}
//Added in EDIT: in production add these lines below to overwrite browser's console.log function
window.console.log = function(e) {
alert("production alert: " + e); //or whatever custom error logging you want
};
</script>
</body>
</html>
您可以向控制台对象添加任何内容。我已经在IE8和Firefox中对此进行了测试,我非常有信心你可以将这个想法用于你支持的任何浏览器。
编辑:您还可以在Firefox,Safari和Chrome中覆盖默认的console.log功能。只需将控制台对象的日志成员重新映射到一个新功能,即在生产中执行任何操作。
答案 1 :(得分:0)
在firebug论坛上进行简短的拖网似乎暗示它(有时候?)looks at the exception to determine what the line number is。
所以你很可能通过明智的按摩来伪造它。
答案 2 :(得分:0)
使用Firebug可以选择显示调用堆栈以及错误。 单击控制台选项卡名称旁边的向下箭头以查看并激活它。 它会在消息的左侧显示一个“加号”图标,显示堆栈。 这可能会使您更接近导致错误的代码。
如果您还需要使用console.error()记录错误以使用它。 (不知道这与铬的兼容性如何)