簡體   English   中英

監視JavaScript輸出,例如console.log()

[英]Monitor JavaScript output, such as console.log()

我一直在尋找Google和各種JavaScript網站,但是我還沒有找到答案。 有什么方法可以使用JavaScript / JQuery來監視諸如console.log()?事件console.log()?

例如,當腳本調用console.log('foo');進行單獨的,繁瑣的交易時,我想觸發一個偶數console.log('foo'); 當將任何Web檢查器與JavaScript控制台一起使用時,很容易在腳本記錄日志時看到foo彈出,但是有沒有辦法我可以用另一個腳本來掛接該事件?

從中借用的代碼是否可以在javascript中擴展控制台對象(用於重新路由日志記錄)?

(function() {
    var exLog = console.log;
    console.log = function(msg) {
        exLog.apply(console, arguments);
        alert(msg);
    }
})()

只要執行console.log()之前運行這段代碼,這應該使您在執行console.log()之后幾乎可以執行任何操作。

雖然您無法擴展控制台,但是可以包裝它的每個方法。 下面的代碼攔截所有日志記錄方法,並將每個調用記錄在一個名為log的變量中。

var actualConsole = window.console;
var c = window.console = {};
var log={};
for (var m in actualConsole){
    if (typeof console[m] ==='object'){
        c[m]=console[m];
    }else if (typeof actualConsole[m] ==='function'){
        c[m]=function () {
            var args = Array.prototype.slice.call(arguments);
            log[this]=log[this]||[];
            log[this].push(args);        
            actualConsole[this].apply(actualConsole,args);
        }.bind(m);
    }// else - nothing else expected
}

console.log('log',1);
console.log('log',2);
console.error('error',1);
console.warn('warn',1);

actualConsole.log('log:',log);

日志看起來像:

{"log":[["log",1],["log",2]],"error":[["error",1]],"warn":[["warn",1]]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM