В отличной книге Дэвида Фланагана по JavaScript есть пример, показывающий, как выполнять запросы XPath в IE. На странице 518 пятого издания вы можете увидеть следующий фрагмент кода, взятый из примера 21-10:
// In IE, the context must be an Element not a document,
// so if the context is a document, use the documentElement instead
if (context == doc) context = doc.documentElement;
return context.selectNodes(this.xpathText);
Я на собственном опыте убедился, что этот код абсолютно необходим. Похоже (хотя я не могу понять почему), что в IE XMLHttpRequest, кажется, случайным образом возвращает ссылку либо на документ, соответствующий полученному XML, либо на documentElement. Что тут происходит?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я полагаю, вы ответили на свой вопрос, иногда IE возвращает ссылку на документ или на элемент документа, оператор if - это просто быстрое условие, чтобы исправить это, если это необходимо.
Если вы спрашиваете, почему IE это делает, я не думаю, что кто-то из присутствующих сможет дать такой ответ ...
Спасибо! Приятно знать, что я не схожу с ума :-) Я почему-то верил (как Эйнштейн), что Бог (и М.С.) не играет в кости со Вселенной!
Но все мы знаем, что это так! Кроме того, после просмотра кажется, что указанная вами проблема немного чаще встречается в IE 6, чем в других версиях.
Я никогда не видел этого, и я широко использую XHR. Можете ли вы показать еще код для репро?