可能重复:
在Chrome中拦截对console.log的调用
我可以在javascript中扩展控制台对象(用于重新路由日志记录)吗?
当我的JS应用程序写入console.log时,我想捕获该日志消息,以便我可以将AJAX记录输出到服务器.我怎么做?
写入日志的代码来自外部服务,这就是我不能直接使用它的原因.
Bri*_*kel 144
您可以通过以下方式劫持JavaScript函数:
(function(){
var oldLog = console.log;
console.log = function (message) {
// DO MESSAGE HERE.
oldLog.apply(console, arguments);
};
})();
Run Code Online (Sandbox Code Playgroud)
oldLog(出于可维护性的原因).message到服务器的位置.apply使用这样我们就可以调用它在 console使用原来的参数.简单地调用oldLog(message)会失败,因为它log取决于它的关联console.
更新下面的每个zzzzBov的评论,在IE9 console.log中实际上并不是一个函数,所以oldLog.apply会失败.有关更多详细信息,请参阅console.log.apply无法在IE9中运行.
Tom*_*icz 19
简单:
function yourCustomLog(msg) {
//send msg via AJAX
}
window.console.log = yourCustomLog;
Run Code Online (Sandbox Code Playgroud)
您可能希望覆盖console要捕获的整个对象console.info,console.warn例如:
window.console = {
log : function(msg) {...},
info : function(msg) {...},
warn : function(msg) {...},
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69789 次 |
| 最近记录: |