我将如何使用JavaScript循环浏览javascript控制台中的消息并将它们显示给用户,例如将它们逐行添加到像div
这样的容器元素。显示来自javascript控制台的消息
我明白如何使用console.log
向控制台添加消息,但我的问题是,是否有任何方法可以检索已添加的消息。
我将如何使用JavaScript循环浏览javascript控制台中的消息并将它们显示给用户,例如将它们逐行添加到像div
这样的容器元素。显示来自javascript控制台的消息
我明白如何使用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
(字符串:“登录”,“警告”,等等)。拦截功能简单地将监听器应用于该类型的控制台消息。在我们的例子中,我们正在应用一个监听器来记录,警告和错误。
我们检索消息并将其放入消息变量中。由于我们拦截了消息,它不会显示在控制台中,所以我们继续前进,并将original.call()或original()添加到控制台。
您可以将上述解决方案作为一个工作示例吗? – 2015-03-02 23:54:24
是的,我可以。检查更新。 – rottenoats 2015-03-03 00:02:15
我无法真正理解上述函数与我目前的JavaScript知识水平,但是当我做'console.log(某事)'时拦截的想法'并且将数据移动到可以读取的其他地方是非常有用的。相反,我可能会沿着那条路走下去。 – 2015-03-03 00:03:23