显示来自javascript控制台的消息

时间:2015-03-02 23:38:37

标签: javascript logging console

如何使用javascript循环浏览javascript控制台中的消息并将其显示给用户,例如将它们逐行添加到像div这样的容器元素。

我了解如何使用console.log向控制台添加消息,但我的问题是,有没有办法检索已添加的消息。

1 个答案:

答案 0 :(得分:1)

要做到这一点,我们的想法是拦截发送到控制台的任何内容。这是一个跨浏览器解决方案。

   function takeOverConsole(){
        var console = window.console
        if (!console) return
        function intercept(method){
            var original = console[method]
            console[method] = function(){
                var message = Array.prototype.slice.apply(arguments).join(' ')
                // do sneaky stuff
                if (original.call){
                    // Do this for normal browsers
                    original.call(console, message)
                }else{
                    // Do this for IE
                    original(message)
                }
            }
        }
        var methods = ['log', 'warn', 'error']
        for (var i = 0; i < methods.length; i++)
            intercept(methods[i])
    }

taking-over-console-log/

找到此信息

在这里我调用该函数,并做一个简单的日志&#34;嘿&#34;。它会拦截它,我会提醒截获的消息。 http://jsfiddle.net/Grimbode/zetcpm1a/

解释此功能的工作原理:

  1. 我们使用实际控制台声明变量console。如果consoleundefined,我们会立即停止并退出该功能。

  2. 我们为不同的控制台消息类型声明var methods = ['log', 'warn', 'error']

  3. 我们循环使用这些方法并调用intercept函数并发送console type(字符串:&#39; log&#39;,&#39;警告&#39;等)。< / LI>
  4. 拦截功能只是将侦听器〜应用于该类型的控制台消息。在我们的例子中,我们正在应用一个监听器来记录,警告和错误。

  5. 我们检索邮件并将其放入邮件变量中。

  6. 由于我们截获了该消息,因此无法在控制台中显示该消息,因此我们继续使用original.call()或original()将其添加到控制台。

    < / LI>