编程方式保存Chrome的控制台日志
答
执行要记录的代码之前,覆盖console.log
一个,抛出它到一个数组(或其他地方)
实例在ECMAScript中6:
var logs = [];
var oldConsoleLog = console.log;
console.log = function(...args) {
logs.push(args);
oldConsoleLog.call(this, args);
}
答
阴影的方法要观察和做他们的数据,例如
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哪一行给你的错误? (我无法复制) –
答
另一种方法把一切在Chrome控制台使用http://www.consoleexport.com 你输入你的网址并提交。它将显示表格中的所有控制台条目,您可以将其复制并粘贴到电子表格中。或者,您可以选择将控制台条目导出为.txt(制表符分隔)或.xlsx格式的文件。
所以如果我想创建一个按钮,基本上采用的网页快照,并打印出控制台,我将不得不启动这样的事情在该事件发生前,是否正确? –
问题:这不会进入无限递归调用吗? –
@ leo.fcx:固定它 –