Показать сообщение отдельно
  #32 (permalink)  
Старый 23.03.2010, 12:46
Новичок на форуме
Отправить личное сообщение для artyv Посмотреть профиль Найти все сообщения от artyv
 
Регистрация: 23.03.2010
Сообщений: 9

Сделал 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 но хоть что-то
Ответить с цитированием