微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对浏览器的 Javascript 中的 NS ERROR FAILURE 错误做出反应 更新

如何解决如何对浏览器的 Javascript 中的 NS ERROR FAILURE 错误做出反应 更新

在 Firefox 的 JavaScript 引擎中,我做了一个(不推荐使用的)同步 XMLHttpRequest,如下所示:

var request = new XMLHttpRequest();
request.open('GET','http://localhost:8780/BoilerData/invention.html',false);
request.send();

if (request.status === 200) {
  ...
} else {
  ...
}

问题是当服务器 myserver.com 未运行时,我在浏览器控制台中收到 NS ERROR FAILURE 错误并且 else 部分未执行。

但是我想对 JavaScript 中的这个错误做出反应。如何在仍然执行同步 XMLHttpRequest 的同时捕获此错误并对其做出反应(例如使用另一台服务器)。

更新

这里有关于错误消息的更多详细信息。在我的浏览器 (Firefox 78.4.1esr) 的控制台中,我看到以下内容

Error in Firefox

解决方法

如果您更喜欢同步请求,请尝试捕获 net::ERR_CONNECTION_TIMED_OUT 异常:

var request = new XMLHttpRequest();
request.open('GET','http:/myserver.com/bar/foo.txt',false);
try{
  request.send();
  if (request.status === 200) {
    //...
  }
}catch(e){
  console.log('Got an exception: ',e);
  //else ...
}

主线程上的同步 XMLHttpRequest 已弃用,您可能希望异步执行 request.open,并将 else 逻辑放在 onerror 事件处理器中:

var request = new XMLHttpRequest();
request.open('GET',true);

request.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
    //    ...
    } 
}
request.onerror = function() {
   console.log('An error occured! status = ',request.status);
   // what else {
   // ...
}

request.send();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。