Вы правы, Jaap, это связано с лимитом подключений Internet Explorer 2. По какой-то причине IE не освобождает подключения к запросам AJAX, выполняемым в закрытых окнах.
У меня очень похожая ситуация, только немного проще:
- Пользователь щелкает в окне A, чтобы открыть окно B
- Окно B выполняет Ajax-вызов, который занимает некоторое время
- Перед возвратом вызова Ajax пользователь закрывает окно B. Соединение с этим вызовом «просачивается».
- Повторите еще 1 раз, пока оба доступных соединения не «утекут»
- Браузер перестает отвечать на запросы
Один из способов, который вы можете попробовать (упомянутый в найденной статье), который, похоже, работает, - прервать запрос XmlHttp в событии unload страницы.
Так что-то вроде:
var xhr = null;
function unloadPage() {
if( xhr !== null ) {
xhr.abort();
}
}
Другой вариант - использовать синхронные вызовы AJAX, которые будут блокироваться до тех пор, пока вызов не будет возвращен, по существу блокируя браузер. Это может или не может быть приемлемым, учитывая вашу конкретную ситуацию.
// the 3rd param is whether the call is asynchronous
xhr.open( 'get', 'url', false );
Наконец, как уже упоминалось, вы можете настроить максимальное количество подключений, которые IE использует в реестре. Однако ожидать, что посетители вашего сайта сделают это, нереально, и это на самом деле не решит проблему - просто отложите ее. Как примечание, IE8 собирается разрешить 6 одновременных подключений.