2014-11-20 63 views
1

我有一个页面有几个脚本显示控制台输出它的使用:停止萤火虫从一个单一的文件

<script src="thirdparty.com/js/foo.js"></script> 
<script src="bar.js"></script> 

我需要使用console.log()打印在bar.js一些事情,但输出保持埋在所有的东西foo.js打印到我不关心的屏幕上。我无法访问foo.js来对其进行更改并删除它是不可能的。

如何让Firebug停止控制台从foo.js打印并继续允许从bar.js打印?

回答

2

之前包括foo.js尝试执行以下JS:

var _console = window.console; 

window.console = { 
    log: function() {}, 
    dir: function() {}, 
    ..... 
} 

在这种情况下,你将有foo.js.空函数

在bar.js中,您可以使用_console

如果这是您可以接受的解决方案,您可以考虑改进。

+0

这是一个不错的技巧,虽然只包含通过[Console API](https://getfirebug.com/wiki/index.php/Console_API)显式记录的消息,但错误和警告并未涉及。 – 2014-11-21 08:53:38

0

console.clear()在你的console.log()调用之前在bar.js中的功能如何? “

+0

这可能会起作用,但也会导致记录到控制台的所有其他消息(例如JavaScript或CSS错误)被删除,这可能不是预期的。也不是所有来自foo.js的消息都会被删除,因为它可能会在foo.js的函数被调用时创建日志。 – 2014-11-21 08:37:54

+0

你说得对。但是如果他需要这样做,仅仅为了调试目的是一种简单的方法。我喜欢Max的解决方案,当然比我更好。 :) – 2014-11-21 11:13:37

1

”无权访问foo.js“。如果该文件是一个已发布的文件,那么向该开发人员说,在已发布的文件上使用调试语句是一个很大的问题。

目前,您不能过滤来自Firebug中的文件的消息。见issue 2955。 (对于Firefox内置DevTools,请参阅bug 905978)但是,您可以在JavaScript文件的第一行使用console.clear()语句来清除以前加载的脚本文件中的控制台消息。

但是,这并不保证如果其他文件来自其他文件,如果它们具有AJAX的事件处理程序或函数。

PS:也许你在你的文章中混合了foo.js和bar.js。你的代码块说bar.js来自第三方,而你在谈论foo.js是罪魁祸首。

+0

关于“无权访问foo.js”:来自foo.js的消息可能不是调试语句,而是错误或警告。如果它是第三方库,那么您可能确实无法访问该文件,并且唯一摆脱此类消息的机会是针对该库提交错误报告。 – 2014-11-21 08:45:54