javascript - 显示来自 javascript 控制台的消息

标签 javascript logging console

如何使用 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])
    }

taking-over-console-log/找到这个

这里我调用该函数,并执行一个简单的日志“嘿”。它会拦截它,我会提醒拦截的消息。 http://jsfiddle.net/Grimbode/zetcpm1a/

解释此函数的工作原理:

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

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

  3. 我们循环访问这些方法并调用 intercept 函数并发送控制台类型(字符串:“log”、“warn”等)。
  4. 拦截函数只是将监听器应用于该类型的控制台消息。在我们的例子中,我们应用一个监听器来记录、警告和错误。

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

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

关于javascript - 显示来自 javascript 控制台的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821484/

相关文章:

tomcat - 不能让 tomcat-maven-plugin 创建日志文件吗?

logging - GKE-堆栈驱动程序

javascript - node.js 在控制台显示 "undefined"

c++ - Ctrl-C 对 C++ Win32 控制台应用程序究竟有什么影响?

java - 将 Azure Blob 存储与 java MVC 结合使用 Azure 网站

javascript - 单击链接时显示/隐藏元素(表单) - 通过 ajax 提交表单

javascript - 在 IE 11 中获取未定义的 javascript 函数

javascript - JS jQuery 在 unfocus 上隐藏元素会阻止其他事件被触发

c++ - 在C/C++程序中,如何在终端中写入粗体文本?

javascript - 如何使用 setter 和 getter 在 TypeScript 中正确设置对象属性?