例如,目前它支持Firebug的console.log:
var console = window['console']; if (console && console.log) { console.log(message); }
显然,这只有在Firebug安装/启用时才可以在Firefox中使用(也可以在其他浏览器上使用Firebug Lite).基本上,我将提供一个JS库,我不知道什么环境将被拉入,我想知道是否有办法向用户报告调试输出.
所以,也许jQuery提供了一些东西 – 我会检查jQuery是否存在并使用它.或者也许有一些知名的IE插件,我可以嗅探的工作.但它必须是一个相当确定和使用的机制.我无法检查人们创建的每个模糊的日志功能.
请每个答案只有一个图书馆/技术,所以他们可以获得投票排名.此外,使用alert()是一个很好的短期解决方案,但是如果您想要强大的调试日志记录或者阻止执行是一个问题,则会中断.
解决方法
基本上,你挂起window.onerror和你的try {} catch(){}阻止一个函数,使一个请求返回到您的服务器与有用的调试信息.
我刚刚在自己的Web应用程序上实现了这样一个过程.我有每一个catch(){}块调用一个函数发送一个JSON编码的消息回到服务器,这反过来使用我现有的日志基础设施(在我的情况下log4perl).我链接的演示文稿还建议在您的JavaScript中加载图像,将错误作为GET请求的一部分.唯一的问题是如果你想包括堆栈跟踪(哪个IE根本不为你生成),请求将会太大.
Tracking ClientSide Errors,by Eric Pascarello
PS:我想补充说,我不认为使用任何类似jQuery的“hardcore”日志记录是一个好主意,因为您正在记录的错误原因是jQuery或Firebug Lite!也许错误是浏览器(咳嗽IE6)做了一些疯狂的加载顺序,并且抛出某种Null参考错误,因为它太愚蠢加载库正确.
在我的例子中,我确保我所有的JavaScript日志代码都位于< head>而不是作为.js文件拉入.这样,我可以肯定的是,无论浏览器抛出什么样的曲线球,赔率都很好,我可以登录.