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 );
}