2015-07-11 42 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格式的文件。

相关问题