【问题标题】:display messages from the javascript console显示来自 javascript 控制台的消息
【发布时间】:2015-05-03 11:52:56
【问题描述】:

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

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

【问题讨论】:

    标签: javascript logging console


    【解决方案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/找到这个

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

    解释这个函数是如何工作的:

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

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

    3. 我们遍历方法并调用intercept 函数并发送console type(字符串:'log'、'warn'等)。
    4. 拦截功能只是将侦听器应用到该类型的控制台消息。在我们的例子中,我们应用了一个监听器来记录、警告和错误。

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

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

    【讨论】:

    • 您能以上述解决方案为例吗?
    • 以我目前的 javascript 知识水平,我无法真正理解上述函数,但是当我在做console.log(something) 并将该数据移动到其他可以读取的地方时拦截的想法非常有帮助。我可能会走那条路。
    • @SenyaPeterCullen 只需检查 jsfiddle。您想要的消息位于消息变量中。
    • 感谢您的更新。我现在明白这个功能了!非常好:)
    猜你喜欢
    • 2022-11-18
    • 2011-03-15
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多