不应该xmlhttprequest的错误事件有错误消息吗?

Nic*_*ick 6 javascript ajax xmlhttprequest firefox-addon

我正在努力从Firefox扩展程序发出AJAX请求.我有这个代码:

function GetMenu(){
   var oReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();

   // Setup event handlers - must be set before calling open()
   oReq.addEventListener("progress", updateProgress, false);
   oReq.addEventListener("load", transferComplete, false);
   oReq.addEventListener("error", transferFailed, false);
   oReq.addEventListener("abort", transferCanceled, false);

   oReq.open('POST', "http://www.foo.bar/", true);
   oReq.send('your=data&and=more&stuff=here');
}


function transferFailed(evt) {
  Application.console.log("An error occurred while transferring the file.");
  Application.console.log(this.responseText);
  for(var i in evt)     
     Application.console.log(i+ ' => '+evt[i]);
}
Run Code Online (Sandbox Code Playgroud)

请求失败,因为http://www.foo.bar/不存在(我假设).我的问题是,为什么传递给transferFailed()的evt对象中没有错误消息,说"域不存在"或"DNS失败"或者那种性质的东西?事件对象的属性都没有任何关于问题是什么,没有消息,没有错误代码等的指示.

不应该有某种实际错误的指示吗?

nma*_*ier 1

由于您正在使用 chrome-privileges 运行:

function transferFailed(evt) {
 if (this.channel && this.channel.status == Components.results.NS_ERROR_UNKNOWN_HOST) {
   alert("DNS error");
 }
}
Run Code Online (Sandbox Code Playgroud)

(@paa 在评论中所说的)。

请参阅(您可能需要QueryInterface/instanceof相应地):