显示javascript控制台中的消息

display messages from the javascript console

本文关键字:消息 控制台 javascript 显示      更新时间:2023-09-26

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

我知道如何使用console.log将消息添加到控制台,但我的问题是,有没有任何方法可以检索已添加的消息。

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

   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])
    }

从接管控制台日志/中发现

在这里我调用函数,并做一个简单的日志"嘿"。它会拦截它,我会提醒被拦截的信息。http://jsfiddle.net/Grimbode/zetcpm1a/

要解释此功能的工作原理:

  1. 我们用实际控制台声明一个变量console。如果consoleundefined,我们立即停止并离开函数。

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

  3. 我们循环遍历这些方法,调用intercept函数并发送console type(字符串:"log"、"warn"等)
  4. Intercept函数只是将侦听器~应用于该类型的控制台消息。在我们的案例中,我们将侦听器应用于日志、警告和错误。

  5. 我们检索消息并将其放入消息变量中。

  6. 由于我们截获了消息,它不会显示在控制台中,所以我们继续使用original.call()或original()将其添加到控制台中。