Javascript xmlHttpRequest对象检测vs try..catch

时间:2011-06-25 07:14:55

标签: javascript ajax xmlhttprequest try-catch object-detection

当检查特定浏览器是否支持AJAX时,我通常会执行对象检测:

if (window.XMLHttpRequest) 
{ 
    xhr = new XMLHttpRequest();
} 
else if (window.ActiveXObject)
{
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

但是每当我看一下更高级的开发人员编写的代码时,我更有可能会看到一个try-catch块:

try {
   xhr = new ActiveXObject("Microsoft.XMLHTTP");    //IE 
}
catch(e)    // if not IE
{
  xhr = new XMLHttpRequest(); 
}

我知道有些人说try..catch比较慢,但如果这只是一个偏好问题,是否有一种惯例/更“标准”的方法来做到这一点?很久以前,当我在innerHTML(非标准)和DOM(标准)之间做出决定时,我也处于同样的境地。感谢您的时间。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

怎么样 xhr = new XMLHttpRequest()||新的ActiveXObject(“Microsoft.XMLHTTP”);

如果XMLHttpRequest失败,则首选XMLHttpRequest,它使用ActiveXObject(“Microsoft.XMLHTTP”)。 更加优雅和干燥。