2015-07-11 60 views

回答

0

執行要記錄的代碼之前,覆蓋console.log一個,拋出它到一個數組(或其他地方)

實例在ECMAScript中6:

var logs = []; 
var oldConsoleLog = console.log; 
console.log = function(...args) { 
    logs.push(args); 
    oldConsoleLog.call(this, args); 
} 
+0

所以如果我想創建一個按鈕,基本上採用的網頁快照,並打印出控制檯,我將不得不啓動這樣的事情在該事件發生前,是否正確? –

+1

問題:這不會進入無限遞歸調用嗎? –

+0

@ leo.fcx:固定它 –

0

陰影的方法要觀察和做他們的數據,例如

if (console) (function (obj, types, callback) { 
    var slice = Array.prototype.slice, // slice used later to protect args from change 
     i; 
    function wrap(type, method, callback) { 
     return function() { 
      callback.call(this, type, slice.call(arguments), method); 
      return method.apply(this, arguments); 
     }; 
    } 
    for (i = 0; i < types.length; ++i) 
     obj[types[i]] = wrap(types[i], obj[types[i]], callback); 
}(
    console, 
    ['log', 'warn', 'error'], 
    function (type, args, meth) { 
     // this is the callback, do something with the data 
     // **don't use console here unless you want an infinite loop ;) 
     alert(type); 
    } 
)); 

IIFE這裏是完全通用的,你可以用它來影子你想

在這裏,我把回調的任何對象的方法如剛纔報警的類型,即會提醒日誌如果你用console.log然後登錄到控制檯

// with callback defined above, 
console.log('foo'); // alerts "log" then logs "foo" 
+0

我'''對象不是function'''錯誤:/ –

+0

@JoshuaTerrill哪一行給你的錯誤? (我無法複製) –

0

另一種方法把一切在Chrome控制檯使用http://www.consoleexport.com 你輸入你的網址並提交。它將顯示錶格中的所有控制檯條目,您可以將其複製並粘貼到電子表格中。或者,您可以選擇將控制檯條目導出爲.txt(製表符分隔)或.xlsx格式的文件。