javascript - 是否有一种全局方法来捕获 javascript 中的网络错误

标签 javascript error-detection

我正在研究通过 Javascript 自动检测页面错误的可能性。我发现了几个问题,其中的答案允许您通过 window.onerror 全局捕获 Javascript 编译和运行时错误,但没有答案提到浏览器错误控制台中经常报告的其他类型的非 Javascript 错误。我主要对网络错误(无效的 URI、SSL 错误、HTTP 错误、超时)和资源解释错误(导致资源解释中止的不匹配类型、加载资源的解析错误等)感兴趣。

我检查了 performance.getEntries 方法,但我很困惑地发现它似乎不包含导致错误的网络请求(我只在 Chrome 29 中检查...)

我不需要完全的跨浏览器兼容性..只要它能在某些浏览器上工作,并且不会破坏其他浏览器,那很好。

最佳答案

window.onerror 处理程序捕获 Chrome 13+、Firefox 6.0+、Internet Explorer 5.5+、Opera 11.60+ 和 Safari 5.1+ 中的 Javascript 错误。 really good answer on StackOverflow它提供了很多关于它的信息。不过,它不会捕获资源加载失败。

对于其他元素(例如图像),jQuery 提供了一个.error() 方法来附加一个错误事件处理程序,当出现错误时提醒用户图像或外部脚本加载失败。如果您不能使用 jQuery,那么另一种选择是通过 XMLHttpRequest 预加载所有图像/外部资源,并监听请求的 status(HTTP 响应代码)( 200 OK304 Not Modified 以外的任何内容都是您想要返回错误的内容)。这样做的缺点是,由于事件处理程序等必须在页面完全加载之前附加,任何禁用 JavaScript 的人都将看到一个零散的、可能是空白的页面。

无效的 URI 和 HTTP 错误最好在服务器端处理。格式良好的 .htaccess 文件与 Apache 的 mod_rewrite(或等效文件)相结合,可以为对服务器的错误请求提供大量缓冲。

关于javascript - 是否有一种全局方法来捕获 javascript 中的网络错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098450/

相关文章:

javascript - 无法使用 setTimeout 或 RAF 实现的 setInterval 用途?

javascript - 使用 jQuery 添加、复制和删除元素

algorithm - 33 字节的错误检测码,检测前 32 字节翻转的位

matlab - 检测均匀表面中的错误点

javascript - 清除 RadDatePicker 客户端的最小/最大日期?

javascript - 从选择菜单中检查多个值

javascript - 我想获取城市名称的经纬度

php - unset 关键字带有下划线,就像存在语法错误一样

firefox - 使用 Firebug 检测网页上的错误

linux - 在 Bash 中检测 JAR 命令的失败