如何使用 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/
解释此函数的工作原理:
我们用实际的控制台声明一个变量
console
。如果控制台
是未定义
,我们就立即停止并离开该函数。我们为不同的控制台消息类型声明
varmethods = ['log', 'warn', 'error']
- 我们循环访问这些方法并调用
intercept
函数并发送控制台类型
(字符串:“log”、“warn”等)。 拦截函数只是将监听器应用于该类型的控制台消息。在我们的例子中,我们应用一个监听器来记录、警告和错误。
我们检索消息并将其放入消息变量中。
由于我们拦截了该消息,因此它不会显示在控制台中,因此我们继续使用original.call()或original()将其添加到控制台。
关于javascript - 显示来自 javascript 控制台的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821484/