我想创建一个"通用"调试日志记录功能,检查着名的日志记录库的JS命名空间.
例如,目前它支持Firebug的console.log:
var console = window['console']; if (console && console.log) { console.log(message); }
显然,这只适用于Firefox,如果安装/启用Firebug(它也适用于其他使用Firebug Lite的浏览器).基本上,我将提供一个JS库,我不知道它将被引入什么环境,我希望能够弄清楚是否有办法向用户报告调试输出.
所以,也许jQuery提供了一些东西 - 我会检查jQuery是否存在并使用它.或者也许有着名的IE插件可以工作,我可以嗅探.但它必须是一个相当完善和使用的机制.我无法检查人们创建的每个模糊日志功能.
请每个答案只有一个图书馆/技术,所以他们可以获得投票排名.此外,使用alert()是一个很好的短期解决方案,但如果您需要强大的调试日志记录或阻止执行是一个问题,则会出现故障.
我个人使用Firebug/Firebug Lite,在IE上让Visual Studio进行调试.当访问者使用一些疯狂的浏览器时,这些都没有任何好处.您真的需要让客户端javascript将其错误记录到您的服务器.看一下我在下面链接的功率点演示.它有一些非常巧妙的想法,如何让您的JavaScript记录您的服务器上的东西.
基本上,您使用一个函数挂钩window.onerror和try {} catch(){}块,该函数使用有用的调试信息向您的服务器发出请求.
我刚刚在自己的Web应用程序上实现了这样一个过程.我有每个catch(){}块调用一个函数将一个JSON编码的消息发送回服务器,然后服务器使用我现有的日志记录基础结构(在我的例子中是log4perl).我链接到的演示文稿还建议在javascript中加载图像,将错误包含在GET请求中.唯一的问题是如果你想要包含堆栈跟踪(IE根本不为你生成),请求将会太大.
由Eric Pascarello跟踪ClientSide错误
PS:我想补充一点,我不认为使用任何类型的库(如jQuery)进行"硬核"日志记录是一个好主意,因为您记录的错误的原因可能是 jQuery或Firebug Lite!也许错误是浏览器(咳嗽 IE6)做了一些疯狂的加载顺序,并抛出某种Null Reference错误,因为它太愚蠢,无法正确加载库.
在我的实例中,我确保我的所有javascript日志代码都在
中,而不是作为.js文件引入.这样,我可以合理地确定无论浏览器抛出什么样的曲线球,赔率都很好我能够记录它.你可以试试log4javascript.
披露:我写了.