Обнаружение объекта Javascript xmlHttpRequest против try..catch - PullRequest
3 голосов
/ 25 июня 2011

При проверке того, поддерживает ли конкретный браузер 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 Ответ

1 голос
/ 25 июня 2011

Как насчет xhr = new XMLHttpRequest () ||новый ActiveXObject («Microsoft.XMLHTTP»);

XMLHttpRequest является предпочтительным, если он не работает, он использует ActiveXObject («Microsoft.XMLHTTP»).Гораздо элегантнее и сухее.

...