我正在研究通过 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 OK
或 304 Not Modified
以外的任何内容都是您想要返回错误的内容)。这样做的缺点是,由于事件处理程序等必须在页面完全加载之前附加,任何禁用 JavaScript 的人都将看到一个零散的、可能是空白的页面。
无效的 URI 和 HTTP 错误最好在服务器端处理。格式良好的 .htaccess
文件与 Apache 的 mod_rewrite
(或等效文件)相结合,可以为对服务器的错误请求提供大量缓冲。
关于javascript - 是否有一种全局方法来捕获 javascript 中的网络错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098450/