我將如何使用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