2010-05-19 32 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的目的,我决定不值得实施,但为了您自己的需要,您可能会认为它是值得的。