![](/img/trans.png)
[英]How to overwrite / intercept console.log and output original log to console
[英]How to overwrite the console.log function in Chrome?
我正在使用一個使用許多不同框架和自定義腳本(jQuery,Backbone,Bootstrap,Less僅舉幾例)的Web應用程序,它們中的任何一個都可以隨時打印控制台輸出。 一些輸出來自我剛才提到的框架,其他輸出來自剩余的console.log
調用,這些調用是產品工作的先前工程師在代碼中留下的。
這是一個問題,因為所有數十行的額外輸出都與有效輸出混合在一起,並且很難解析所有這些行以檢查我的有效輸出是否正常工作。 我想要一個臨時解決方案來覆蓋Chrome中的console.log
函數,以便我可以過濾掉某些消息並集中精力在我關心的輸出上。
如何使用自己的功能覆蓋Chrome中的console.log
功能?
我已經嘗試創建一個Chrome擴展程序,並且可以正常工作-就擴展程序而言,我可以覆蓋console.log
,但是原始源中對console.log
所有引用均未更改。
編輯:為清楚起見,我沒有在尋找另一個腳本添加到站點。 我正在尋找一種完全在Web瀏覽器中實現的解決方案,或者在不涉及更改在Web應用程序中下載源代碼的其他某種技術的情況下實現的解決方案。
不完全覆蓋console.log
,但是如果右鍵單擊控制台輸出中的任何行,您可以選擇“過濾器”>“隱藏來自.js的消息”。 它還可以讓您過濾掉404等錯誤消息,即使您可以覆蓋console.log
,您也可能無法執行。
Firefox可以通過about:config
更改特定擴展名的控制台日志記錄級別 。
Chrome沒有此功能。 您的選擇:
<page context>
的下拉菜單來更改控制台的有效執行上下文。 請注意,頁面中的任何框架或iframe都有其自己的執行上下文,可使用框架下拉列表(最初設置為<top frame>
)進行訪問。 log
是console
對象的功能,您可以像這樣覆蓋它:
var logFn = console.log; // save the original log function for later use
console.log = function(msg) {
...
logFn.call(console, msg); // call original function if you want to
};
或者,使用閉包保存舊的日志功能:
console.log = (function(logFn) {
return function(msg) {
...
logFn.call(console, msg); // call original function if you want to
};
})(console.log);
您需要盡早執行此操作,因為您希望其他框架/庫使用自定義的日志功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.