2009-10-27 32 views
2

(我知道有些人已經問JS個人資料問題,但是這不是我所需要的,如果我正確地理解他們。)JavaScript的輪廓在Firefox

我想跟蹤的JavaScript的執行以收集信息1)調用哪個函數,2)函數被調用的時間,3)函數的執行時間。

我想在線收集信息(關於部署代碼),但不是內部收集信息。所以,權衡必須是輕微的。另外,我不想在函數調用的前後手動添加一行。但是,如果有一種方法可以動態地測試代碼,那將是非常好的。

在此先感謝!

回答

3

我不認爲有任何系統可以讓JavaScript自動跟蹤函數啓動的時間和函數停止的時間。這可能是你必須添加自己的東西。如果這是你所需要的,你可能要考慮使用PHP來提供你的JavaScript,並使用正則表達式來查找每個函數的開始和結束,用正則表達式或類似的東西。

你的正則表達式可能是這樣的(沒有經過充分測試,所以你不得不嘗試着):

/function [A-Za-z_$][A-Za-z0-9_$]*{(.*?)}/i 

一旦你可以訪問功能的裏面,你可以用函數來替換值跟蹤其原始和結束的原始功能定義。

這有利於做你想要的東西,而不必擔心如何修改你的js代碼的功能。這是服務器將完全處理的東西。

如果不是這樣,而不是直接調用函數,使用包裝函數:

function wrapFunction(func, context, argList) 
{ 
    // Replace with however you are storing this. 
    console.log(new Date().getTime()); 
    func.apply(context, argList); 
    console.log(new Date().getTime()); 
} 

這具有比具有服務器爲您更新JS清潔了很多好處。不幸的是,這也意味着必須手動重寫JS。

我的建議是簡單地調整日誌語法並使用它。大多數記錄器將輸出時間戳,上下文,級別和特定消息。如果您只是在函數的開頭和結尾調用記錄器,它將完全按照您的要求進行操作。此外,由於許多配置都是可配置的,因此您可以將其顯示到Firefox的JS控制檯,將信息發送到服務器,或者如果您選擇了完全禁用。

有JS記錄器的列表,在這裏:

JavaScript loggers

這不幸的是需要手動更新的一切,但它似乎是最簡單的方式來獲得90%的你在找什麼盒子外面。

+0

克里斯,感謝您的建議!同時,我剛剛發現了一些非常令人鼓舞的酷代碼。看看這裏:http://gist.github.com/189144 – Paul 2009-10-27 05:41:14