是否有可能以編程方式訪問以前記錄的Firebug輸出?你能以編程方式訪問Firebug控制檯輸出嗎?
例如:
console.log('a');
console.log('b');
console.log('c');
for (var i = 0; i < console.output.length; ++i) {
alert(console.output[i]); // "a", "b", "c"
}
是否有可能以編程方式訪問以前記錄的Firebug輸出?你能以編程方式訪問Firebug控制檯輸出嗎?
例如:
console.log('a');
console.log('b');
console.log('c');
for (var i = 0; i < console.output.length; ++i) {
alert(console.output[i]); // "a", "b", "c"
}
參見this thread。 (不完全重複,但相關)。
我還沒有找到讀取控制檯輸出的方法,但是如果您只想捕獲您的:: log()消息,則可以覆蓋.log()方法或創建自己的會將日誌消息寫入另一個容器,然後調用.log()。
var myLogStr='';
function myLog(str)
{
if(console) console.log(str);
myLogString+=str+'\n';
}
當然,所有的螢火蟲對象(控制檯等)的存在於DOM,所以你可以跟蹤控制檯窗口的ID和直接獲取內容。
更新
Firebug also offers some events that you can hook into,它可以提供一種方式來攔截錯誤等
沒有自己包裹window.console
,我不相信這是可能的。看看源代碼,當調用Firebug的console
方法(在主文檔中運行,因此沒有特殊權限)被調用時,它會在主文檔中留下一些對象,然後引發自定義事件。運行在特權插件域中的Firebug偵聽器接收事件,吞噬文檔中留下的對象,並向控制檯面板添加適當的內容,該面板是瀏覽器鑲邊的一部分,因此無法在主要運行的JavaScript中訪問窗口。
對於這個細節我可能是錯的,因爲我只是粗略地看了一下Firebug的源代碼,做了很少的Firefox插件開發,但我認爲這是大致正確的。
保羅愛爾蘭創造了應該解決您的問題的console.log的包裝,看看here
哦諷刺 - 我寫了一篇關於這個問題,得票最多的答案... – nickf 2010-12-07 10:39:03