【问题标题】:Listening console.log监听控制台.log
【发布时间】:2011-09-21 06:55:26
【问题描述】:

我想为console.log() 设置一个侦听器,并在不阻止默认行为的情况下处理消息。因此,开发工具的控制台也应该收到消息。有什么想法吗?

【问题讨论】:

    标签: javascript console logging devtools


    【解决方案1】:

    这是一个小技巧,但我不确定是否有更好的解决方案:

    console._log_old = console.log
    console.log = function(msg) {
        alert(msg);
        console._log_old(msg);
    }
    

    【讨论】:

    • 该解决方案的问题在于它对全局范围有副作用。更好的解决方案是将 console._log_old 存储在闭包中的局部变量中,而不是全局范围内。
    • 是的,使用 apply ;) 查看我编辑的答案。无论如何,感谢您提出这一点,在以前的版本中确实如此,而我一开始并没有注意到这一点。
    【解决方案2】:

    从未在网页中尝试过,但它可以在浏览器插件中使用(出于安全原因,javascripts 权限不同)。

    你绝对可以这样做:

    (function(){
    
        var originallog = console.log;
    
        console.log = function(txt) {
            // Do really interesting stuff
            alert("I'm doing interesting stuff here !");
    
            originallog.apply(console, arguments);
        }
    
    })();
    

    javascript 的有趣之处在于函数也是对象:D

    【讨论】:

    • 看来console.log 不能在console 对象之外工作——也许它依赖于this 变量。另外,我不认为将函数作为对象很有趣:正是它使这种语言变得出色。
    • 你是对的!我编辑了我的答案。我们俩都会得到一个很好的答案;)
    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 2016-10-15
    • 2011-06-12
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多