我将如何使用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
用实际的控制台声明一个变量。如果console
是,undefined
我们就立即停止并离开该功能。
我们声明var methods = ['log', 'warn', 'error']
不同的控制台消息类型
intercept
函数并发送console type
(字符串:“ log”,“ warn”等)。拦截功能只是将listener〜应用于该类型的控制台消息。在我们的案例中,我们将监听器应用于日志,警告和错误。
我们检索消息并将其放入message变量中。
由于我们拦截了该消息,因此不会在控制台中显示该消息,因此我们继续执行original.call()或original()将其添加到控制台中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句