Re: Выполнить JS после загрузки всех внешних стилей
От: Mamut Швеция http://dmitriid.com
Дата: 08.10.07 15:24
Оценка: 22 (1)
F>Есть набор CSS-файлов, необходимо выполнить JS только после того, как эти файлы будут загружены и применены к DOM страницы. Это нужно для расчетов позиций некоторых элементов (т.к. размеры элементов, относительно которых позиционируются требуемые, задаются через CSS).
В jQuery используется такой код: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/event.js (функция bindReady, в jQuery.ready() выполняются все функции, назначенные на выполнение при зугрузке документа)

var readyBound = false;

function bindReady(){
    if ( readyBound ) return;
    readyBound = true;

    // If Mozilla is used
    if ( jQuery.browser.mozilla || jQuery.browser.opera )
        // Use the handy event callback
        document.addEventListener( "DOMContentLoaded", jQuery.ready, false );
    
    // If Safari or IE is used
    else {
        // Continually check to see if the document is ready
        function timer(){
            try {
                // If IE is used, use the trick by Diego Perini
                // http://javascript.nwbox.com/IEContentLoaded/
                if ( jQuery.browser.msie || document.readyState != "loaded" && document.readyState != "complete" )
                    document.documentElement.doScroll("left");
    
                // and execute any waiting functions
                jQuery.ready();
            } catch( error ) {
                setTimeout( timer, 0 );
            }
        }

        timer();
    }

    // A fallback to window.onload, that will always work
    jQuery.event.add( window, "load", jQuery.ready );
}


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.