回复: 为AJAX应用程序构建一个错误提交系统
(三) 创建一个Mailto:链接
为了使用户能够向你发送关于该错误的信息,你应该提供给他们一个他们能够点击的链接。这样很好,因为它让这些用户自己决定愿不愿意受麻烦,而且他们能够避免发送多份相同的错误报告。
这个mailto:链接能够打开用户的电子邮件程序,然后就象下面这样填充邮件的Subject和Body域:
Subject: Error from http://myserver.com/myapp/index.cgi?id=234 Body:
ReferenceError: nonexistent_variable is not defined fun_c()@http://myserver.com/myapp/index.cgi?id=234:19 fun_b()@http://myserver.com/myapp/index.cgi?id=234:14 fun_a()@http://myserver.com/myapp/index.cgi?id=234:9 apply(null,[object Object])@:0 ()@http://myserver.com/myapp/livedebug.js:106 onload([object Event])@:0 @:0 |
用户能够添加他们喜欢的另外的任何信息,然后发送该消息。
(
四) 实现细节 下面这些函数定义在talkback.js文件中:
◆tb_wrap(fun)-这个函数负责把函数fun放到一个包装器中,由该包装器捕获任何异常并且向用户提供一个机会来把这些错误发送回开发者。当发生一个异常时,它把该错误对象添加到一个异常列表并且向该用户提供一个提交链接。如果任何更深的异常发生,那么它将把它们添加到异常列表和提交链接。
◆tb_show_talkback_link()-这个函数显示一个小型浮动窗口,它能够向用户提供一个机会来提交一个错误:"An error has occurred in this page. To report this error, please click here: Report Error"。
·这个窗口仅在第一次发生异常时出现,并且它停在其它窗口内容之一。如果更深的异常发生,那么它们的信息会被添加到现有的mailto:链接上。
·tb_set_link_contents()-在每次抛出一个异常时,都把它添加到一个列表上。然后,扫描整个列表以发现有用的信息,然后把该信息打包到一个mailto:链接中。当在第一次抛出异常时显示这个链接,然后一直显示。
四、 小结 现在,开发者正在越来越多地使用JavaScript和AJAX技术创建具有丰富特征的应用程序。因此,对于应用程序级支持的需要也相应地增长。本文中提供的这个小型回馈系统可能有助于搜集到有关一个错误的尽可能多的信息并且向用户提供一个mailto:链接用来提交这一信息。当然,该用户能够添加任何可能帮助捕获该错误的另外的信息。