Javascript xmlHttpRequest对象检测与try.catch

Javascript xmlHttpRequest object detection vs try..catch

本文关键字:try catch 检测 xmlHttpRequest 对象 Javascript      更新时间:2023-09-26

在检查特定浏览器是否支持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(); 
}

我知道有些人说试试。。捕获速度较慢,但如果这几乎只是一个偏好问题,是否有一种惯例/更"标准"的方法来做到这一点?很久以前,当我在innerHTML(非标准)和DOM(标准)之间做出决定时,我也处于同样的情况。谢谢你抽出时间。任何建议都将不胜感激。

怎么样xhr=new XMLHttpRequest()|| new ActiveXObject("Microsoft.XMLHTTP");

如果XMLHttpRequest失败,它将使用ActiveXObject("Microsoft.XMLHTTP")。更加优雅和干燥。