如果浏览器控制台出现任何错误,我必须向用户询问次数,并且每次必须完成询问他们使用的浏览器,不是操作系统,浏览器。谷歌是一个搜索引擎,你正在使用浏览器?你试过另一个吗?您的浏览器是最新的吗?您自2009年以来没有更新过?好的,你现在更新了吗?还是行不通。嗯。你确定你甚至在正确的页面上吗?好吧,所以没有问题,你只是期待它做一些它不会做的事。
我喜欢的方法是捕获所有JavaScript错误,并以某种方式将它们显示在页面上,例如,通知弹出窗口显示"嘿,发生错误,复制此内容它可以得到修复!"
任何......任何指针?在我完全疯了之前?
答案 0 :(得分:3)
您有几个选择:
Exception handlers允许您捕获未在本地处理的更高代码级别的异常。
同样window.onerror(fn)
会在页面中捕获一些错误,您可以在该事件触发时记录它们。
除了任何错误之外,您还可以从用户代理字符串中检索浏览器信息并记录下来,这样您就不必向用户询问他们不会总是知道的事情。 / p>
许多桌面程序都提供诊断屏幕,报告技术支持通常想知道的大量系统信息。如果需要,您可以为您的Web应用程序创建类似的页面。它可以收集所有可以识别单个系统的内容,并将其全部放在一个可复制的文本字段中。在紧要关头,用户可以从该屏幕读取信息或通过电子邮件发送给支持的人。
您可以将所有这些与某种内部日志系统(可能是本地存储的最后N个错误)和一些用户界面相结合来查看它们。
答案 1 :(得分:0)
依赖用户执行上述任何操作的任何方法都将失败:
相反,您需要一个日志文件,目录或服务器上的数据库表,其中收集消息(基本上是自动化的错误报告)。
可能会失败或在变量中返回可能的错误条件的代码需要编写以检查错误消息 - 即使这是最佳实践,这么多代码也缺少这个 - 然后将错误消息发送到您的集合中设备
当然,这假设在发生错误后代码仍能正常运行以发送自动错误报告。但是使用通常不是英雄假设的网络应用程序。
我第一次采用这种方法是在2001年用PHP学习过一些大学研究代码,其中有一个" bug" mySQL表收集所有错误。为代码质量创造了奇迹。
这在浏览器Javascript中更难实现,因为运行时错误可能会停止页面,try/catch
块有时会掩盖失败的内容。但是仍然可以做很多事情。