console.log有时不起作用

时间:2012-12-12 16:37:52

标签: javascript google-chrome

我曾多次遇到这种情况,&没有解释。网站上没有JS错误。代码确实正在执行。用alert()替换它们就可以了。

所以今天又发生了,所以我试着检查控制台对象中的控制台对象&我发现了一些违规行为,好像有什么东西覆盖了控制台对象。

以下屏幕截图是我遇到此问题的网站(网站A):

http://ompldr.org/vZ256Mw/Selection_004.jpg

你看到log,warn&信息是空函数?控制台对象与控制台工作正常的网站(网站B)的不同之处(截图如下)?

http://ompldr.org/vZ256Mg/Selection_003.jpg

现在,两个站点上运行的代码完全相同。站点B是我的本地安装,站点A正在升级,我在代码中没有任何覆盖控制台对象的东西,那么这个行为有什么解释呢?


根据nfroidure的建议,我在其他任何内容之前添加了代码,我得到了这个:uncaught error! (anonymous function) (anonymous function),其中第二个指向另一个库文件中的代码,其中包含以下内容:

if (!("console" in window) || !("firebug" in console))
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}

这是负责任的,因为我认为if检查是错误的。 "console" in window将是真实的&amp; Chrome中的"firebug" in window对我来说是错误的,导致替换控制台方法。那边应该&&,不是吗?

更新:将操作符更改为&&后,它开始在站点A上运行,但我不明白为什么它只在一个而不是另一个上被触发。

2 个答案:

答案 0 :(得分:1)

看起来网站A包含了firebug,因为控制台的方法看起来很像这里的方法:http://getfirebug.com/wiki/index.php/Console_API

答案 1 :(得分:1)

尝试在文档顶部添加:

<script>
(function(){
    var wc=window.console;
    delete window.console;
    window.__defineGetter__("console", function(){
        return wc;
        });

    window.__defineSetter__("console", function(val){
        throw('error!');  // Look at js stack when throwed
        });
})();
</script>