Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在Firebug控制台中伪造调用文件?_Javascript_Firebug - Fatal编程技术网

Javascript 有没有办法在Firebug控制台中伪造调用文件?

Javascript 有没有办法在Firebug控制台中伪造调用文件?,javascript,firebug,Javascript,Firebug,注:Firebug是Firebug扩展和/或Webkit开发工具 对于假装调用文件,我指的是控制台输出右侧的链接,指向调用输出函数(如console.log)的位置 当您有错误消息等的统一处理程序时,这将成为一个问题,因此所有console.log调用都来自相同的文件和行号 有没有办法伪造这些信息?或者将这样的链接(指向行号)烘焙到firebug控制台日志中(只要有stacktrace)?只需将文件名和行号添加到任何日志的末尾,就会给控制台输出增加噪音,使其变得凌乱。在firebug论坛上做一个

注:Firebug是Firebug扩展和/或Webkit开发工具

对于假装调用文件,我指的是控制台输出右侧的链接,指向调用输出函数(如console.log)的位置

当您有错误消息等的统一处理程序时,这将成为一个问题,因此所有console.log调用都来自相同的文件和行号


有没有办法伪造这些信息?或者将这样的链接(指向行号)烘焙到firebug控制台日志中(只要有stacktrace)?只需将文件名和行号添加到任何日志的末尾,就会给控制台输出增加噪音,使其变得凌乱。

在firebug论坛上做一个简短的浏览,似乎暗示它(有时?)


因此,您可以通过明智的按摩来伪装它。

对于Firebug,可以选择在错误旁边显示调用堆栈。 单击console选项卡名称旁边的向下箭头以查看并激活它。 它会导致消息左侧显示一个“加号”图标,从而显示堆栈。 这可能使您更接近导致错误的代码

如果您还需要使用console.error()记录错误,则可以使用它。
(但不确定这与chrome有多兼容)

大多数现代浏览器都定义了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>

试验
抛出错误
函数抛出器(){
log(“此处出错!”);
}
如果(!window.console){
window.console={
日志:函数(e){
警报(e);
}
};
}
//在编辑中添加:在生产中添加以下行以覆盖浏览器的console.log功能
window.console.log=函数(e){
警报(“生产警报:+e);//或任何您想要的自定义错误日志记录
};
您可以向console对象添加任何需要的内容。我已经在IE8和Firefox中对此进行了测试,我很有信心您可以在您支持的任何一套浏览器上实现这一想法


编辑:看起来您还可以覆盖Firefox、Safari和Chrome中的默认console.log函数。只需将console对象的日志成员重新映射到一个新函数,该函数在生产过程中可以执行任何操作。

Hmm?我到底该怎么做呢?不需要在代码文件中抛出异常,或者是否可能以某种方式将文件名和行号注入异常?如果您有统一的错误处理,您可能会遍历它接收的任何错误属性,以查看Firebug可能使用的内容。这种方法的问题是,您仍然无法看到调用日志的行。另外,Chrome没有堆栈跟踪支持(据我所知):/我之所以使用统一的调试消息处理程序,是因为它是框架的一个简单插件,我可以简单地将其从生产环境中删除,从而不会给用户带来错误。另外,在生产环境中,它使我有可能将错误消息从客户机推送到服务器。这是有意义的。在生产中覆盖console.log函数怎么样?查看我对代码和描述的编辑。解决方案似乎很有趣,因为我可以简单地重载console.log/error,从而捕获所有调试消息。但是,我仍然丢失了调用console.log的实际代码位置。这是什么意思?如果您注释掉上面的生产线,那么运行的console.log是内置的Firebug版本,因此代码位置应该正常报告。除非你说的是在生产中获取代码位置。你说得对。但我不确定你是否有任何选择。