Сделал DOM-независимое решение:
/**
* Javascript ThreadBox
*
* DOM-independent implementation of FThread {@link http://habrahabr.ru/blogs/javascript/86852/}
*
* Usage: threadBox([context,] function);
*
* @author Vasiliy Aksyonov <outring@gmail.com>
* @version 1.0
*/
var threadBox = (function() {
var thread;
try { thread = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {
try { thread = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { thread = false; }
}
if (!thread && typeof XMLHttpRequest != 'undefined') {
thread = new XMLHttpRequest();
}
if(thread) {
var threadBox = function () {
var context = arguments.length >= 2 ? arguments[0] : null;
var process = arguments.length >= 2 ? arguments[1] : arguments[0];
thread.onreadystatechange = function() {
if (!process) {
return;
}
var innerProcess = process;
process = null;
innerProcess.call(context);
};
thread.open('GET', '#', true);
thread.send(null);
}
}
else {
var threadBox = function () {
var context = arguments.length >= 2 ? arguments[0] : null;
var process = arguments.length >= 2 ? arguments[1] : arguments[0];
try { process.call(context); }
catch(e) { setTimeout(function() { throw e; }, 0); }
}
}
return threadBox;
})();
Несмотря на то, что делаем асинхронный XMP запрос, работает вроде синхронно. Способ использования отличается конечно, но ничто не мешает переделать, но на мой взгляд (мне) так удобнее : D
Ну и да, как видно добавлен небольшой костыль внизу, на всякий случай, в хроме он конечно не сильно поможет : D но хоть что-то