如何应对浏览器 Javascript 中的 NS ERROR FAILURE 错误
How to react to a NS ERROR FAILURE error in the browser's Javascript
在 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) 的控制台中,我看到以下内容:
如果您更喜欢同步请求,请尝试捕获 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', 'http:/myserver.com/bar/foo.txt', 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();
在 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) 的控制台中,我看到以下内容:
如果您更喜欢同步请求,请尝试捕获 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', 'http:/myserver.com/bar/foo.txt', 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();