2015-03-02 29 views
1

我將如何使用JavaScript循環瀏覽javascript控制檯中的消息並將它們顯示給用戶,例如將它們逐行添加到像div這樣的容器元素。顯示來自javascript控制檯的消息

我明白如何使用console.log向控制檯添加消息,但我的問題是,是否有任何方法可以檢索已添加的消息。

回答

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(字符串:「登錄」,「警告」,等等)。
  4. 攔截功能簡單地將監聽器應用於該類型的控制檯消息。在我們的例子中,我們正在應用一個監聽器來記錄,警告和錯誤。

  5. 我們檢索消息並將其放入消息變量中。由於我們攔截了消息,它不會顯示在控制檯中,所以我們繼續前進,並將original.call()或original()添加到控制檯。

+0

您可以將上述解決方案作爲一個工作示例嗎? – 2015-03-02 23:54:24

+0

是的,我可以。檢查更新。 – rottenoats 2015-03-03 00:02:15

+0

我無法真正理解上述函數與我目前的JavaScript知識水平,但是當我做'console.log(某事)'時攔截的想法'並且將數據移動到可以讀取的其他地方是非常有用的。相反,我可能會沿着那條路走下去。 – 2015-03-03 00:03:23