2010-05-19 38 views
3

我已經構建了一個顯示日誌消息和日期時間的自定義日誌記錄實用程序。我想在調用函數的源代碼中添加行號。查找函數調用的源代碼行

有沒有一種方法可以確定HTML源代碼的哪一行是特定的javascript函數被觸發的?

+0

可能的重複:http://stackoverflow.com/questions/1340872/how-to-get-javascript-caller-function-line-number-how-to-get-javascript-caller-s – jigfox 2010-05-19 15:47:48

回答

7

已經寫了日誌庫(log4javascript)我自己,我已經考慮過這個同樣的問題,這裏是我的想法:

的問題是,爲了得到你想要的信息,你需要一個Error對象是在有問題的線上創建的。在日誌實用程序中創建Error只會直接爲您提供日誌實用程序代碼中特定行的文件名和行號,而不是針對執行日誌記錄調用的代碼行。這一輪唯一的辦法我能想到的是解析Errorstack財產(或Opera中的message屬性),其中有幾個問題:

  • 堆棧跟蹤僅在Mozilla中,最近的WebKit和Opera提供瀏覽器
  • 堆棧跟蹤是從瀏覽器到瀏覽器不同而不同,可以在不通知未來的瀏覽器再次更改格式,從而打破瞭解析代碼
  • 拋出Error並分析其堆棧跟蹤每個日誌的通話將添加一個字符串顯着的性能開銷。

出於log4javascript的目的,我決定不值得實施,但爲了您自己的需要,您可能會認爲它是值得的。