0

在独立的 XUL 应用程序中,我想捕捉server not found异常。我已经尝试通过检查状态来检查onStateChangensIWebProgressListener但这似乎不起作用。我的onStateChange事件实现如下图所示。我假设如果STATE_STARTSTATE_STOP没有返回有效值,则页面加载有问题,并向用户显示错误消息。

onStateChange: function(aProgress, aRequest, aFlag, aStatus) {
  const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
  const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP; 

  if(aFlag & STATE_START) {
      document.getElementById("progressBar").hidden = false;
  }
  if(aFlag & STATE_STOP) {
      setTimeout(function() { document.getElementById("progressBar").hidden = true; }, 2000);     
  }

  if(aFlag & (!STATE_START | !STATE_STOP)) {
    alert("Your connection seems to be down. Please confirm with your system admin.");    
  }
  return 0;

},

有人可以告诉我我做错了什么吗?提前致谢。

4

1 回答 1

2

onStateChange指示是否存在连接错误的参数是aStatus。例如,您可以使用Components.isSuccessCode

if ((aFlag & STATE_STOP) && !Components.isSuccessCode(aStatus))
{
  alert("Your connection seems to be down. Please confirm with your system admin.");
}

您还可以比较aStatusComponents.results.NS_ERROR_UNKNOWN_HOST“未找到服务器”错误对应的哪个。但是,如果连接断开,则可能会出现许多其他错误,例如NS_ERROR_CONNECTION_REFUSED(连接失败)、NS_ERROR_UNKNOWN_PROXY_HOST(未找到代理)、NS_ERROR_OFFLINE(在离线状态下尝试连接)。您可以在nsNetError.h中找到完整的网络错误代码列表。

于 2012-05-14T06:33:18.447 回答