Link: http://ehand.muminski.be/ajax/
Skrypt pełną moca

Chodzi o loader który wczytuje odpowiedni plik. W zależności od zastosowania wykonuje go jako eval lub dołacza jako text do podanego diva(domyslnie do M_text).
użyję Znacznika \[php\] aby pokolorowalo ładnie kod

<?php //Autor skryptu Michał "Meetal" Środek - eHand Team // Skrypt może być wykożystywany z zachowaniem kilku pierwszych linijek informując
ych o autorze // Strona eHand Teamu: http://ehand.ahh.pl // B_ = bool var onsubmitpost=Array(); // funkcje modulów wykonywana w momecie zainicjowania wysylania zapytan metoda POS
T var http_request = false; // obiekt ajax var B_wait = 0; // czy skrypt ma czekać z wysylaniem zapytan var E_url=null; // aktualna nazwa wczytywanego pliku (E od error mialo to byc do generowania bledow) var TEMP_counter=0; // licznik zliczający ilosc stron do zaladowania var MY_counter=0; // licznik zliczający ilosć stron zaladowanych var types=Array(); // tablica zawierająca rodzaje plikow(czy to jest plik *.php/html itp czy *.js(zawuierający kod js) var div = Array(); // tablica przechowująca nazwy DIVow ktorych innerHTML zostanie zastapiony prze tr
esc ladowanego pliku var B_post=false; // czy do aktualnego pliku ma byc uzyta metoda POST var CODE_counter=0; // licznik zaladowanych plikow (uzywany jako &code= w adresie aby wymusic pobranie strony a nie odczatanie jej z pamieci c
ache) function makeRequest(method,url,post) // podajemy modote, adres pliku oraz ewentualnie kod post np zonk=zonk&knoz=knoz&qwerty=uiop { if(method=='POST') {E_url=url; B_post=true;} else { //---------------------------------- B_wait++; E_url=url; //---------------------------------- } http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Nie moża stworzyć instancji obiektu XMLHTTP.'); return false; } http_request.onreadystatechange = alertContents; // var code=Math.round(Math.random()*4)*Math.round(Math.random()*8)*Math.round(Math.random()*15); // if(url.match("[?]")=="?") code='&code='+code; else code='?code='+code; CODE_counter++; //najpierw byla metoda losująca kod teraz po prostu za każdym razem jest to o 1 wi
ększa wartość // jesli w nazwie pliku jest uzyty znak '?' dodajemy kod po przez & if(url.match("[?]")=="?") var code='&code='+CODE_counter; else var code='?code='+CODE_counter; http_request.open(method, url+code, true); // wykonujemy zapytanie if(B_post) // jeśli jest to zapytanie POST wysylamy naglowki { http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //http_request.setRequestHeader("Content-length", post.length); //http_request.setRequestHeader("Connection", "close"); } http_request.send(post); } var B_loadUrl=false; // czy teraz jest ladowany plik URL var B_loadJS=false; // czy teraz jest ladowany plik JS function alertContents() { if (http_request.readyState == 4) { if (http_request.status == 200) { if(B_post) // jesli jest wykonane zapytanie POST { B_post=false; //alert("return: "+http_request.responseText); if(onsubmitpost_ok[E_url]) onsubmitpost_ok[E_url](); // jesli modul posiada funkcje onsubmitpost_ok to wywolujemy ja } else { if(types[MY_counter]=='JS') // jesli plik jest kodem JavaScript { //alert("return: "+http_request.responseText); if(onload[E_url]) onload[E_url](); // jesli modul posiada konstruktor to wywolujemy go B_loadJS=false; } else if(types[MY_counter]=='URL') { document.getElementById(div[MY_counter]).innerHTML = http_request.responseText; // dodajemy kod do odpowiedniego diva if(onload[E_url]) onload[E_url](); // jesli modul posiada konstruktor to wywolujemy go B_loadUrl=false; } MY_counter++; } } else alert(E_url+': Connection Error.'); if(TEMP_counter==MY_counter) // jesli wszystkie pliki zostaly zaladowane { TEMP_counter=0; MY_counter=0; document.getElementById('M_loading').style.visibility='hidden'; // tabelka LOADING } } else document.getElementById('M_loading').style.visibility='visible'; // tabelka LOADING } var myURL=''; function loadUrl(url) { if(files[MY_counter]!=url || B_post) Timeout[url] = window.setTimeout('loadUrl("'+url+'")', 500); // jesli nie jest kolej tego pliku nastepuje rekurencja else { if (Timeout[url]) { window.clearTimeout(Timeout[url]); } if(url==myURL) { x=confirm("Wybrana strona jest wlasnie zaladowana. Czy chcesz ją odświerzyc?"); if(x) { myURL=null; loadUrl(url); } else TEMP_counter--; } else { myURL=url; B_loadUrl=true; makeRequest('GET', url,null); } } } function loadJS(url,load) // ladujemy plik { if(files[MY_counter]!=url || B_post) Timeout[url] = window.setTimeout('loadJS("'+url+'",'+load+')', 500); // jesli nie jest kolej tego pliku nastepuje rekurencja else { if (Timeout[url]) { window.clearTimeout(Timeout[url]); // resetujemy timer } if(myJS[url]==true && !load) // jesli nie zostal zaladowany { TEMP_counter--; // zmniejszamy liczbe plikow do zaladowania if(TEMP_counter==MY_counter) // jesli wszystkie pliki sa zaladowane zerujemy licznik { TEMP_counter=0; MY_counter=0; document.getElementById('M_loading').style.visibility='hidden'; // ukrywamy tabelke z napisem LOADING } } else { myJS[url]=true; B_loadJS=true; B_loadUrl=false; makeRequest('GET', url,null); } } } function setJS(url,load) // ustalamy jakis skrypt do zaladowania { if(myJS[url]!=true || load) { files[TEMP_counter]=url; types[TEMP_counter]='JS'; TEMP_counter++; loadJS(url,load); } } function setUrl(url,divname) // ustalamy jakas strone do zaladowania { files[TEMP_counter]=url; types[TEMP_counter]='URL'; if(divname) div[TEMP_counter]=divname; else div[TEMP_counter]='M_text'; // jesli zostal podany DIV do ktorego mamy dodać text to zmienna div[id pliku] prz
yjmuje jego wartosc. Domyslny div to M_text TEMP_counter++; loadUrl(url); } ?>
Aby całość dzialała niezbędny jest DIV o id = M_text oraz okienko preloadera
Kod
<!--LOADING FORM-->
<div id="M_loading">
<table id="preloaderTable">
<tr><td align="center">
<table width="200" height="50" bgcolor="#de5522" style="vertical-align: middle; border:1px solid white; font-weight:bold; font-size :15px;"><tr><td align="center">Loading...<br/>
<br/><a href="javascript:hideLoading();" style="color:black; font-weight:normal;">Close Preloader</a>
</td></tr></table>
<br/><br/><br/>
</td></tr>
</table>
</div>
<!--LOADING FORM-->
<script language="javascript" type="text/javascript">
<!--
/*
SKRYPT pobiera szerokość i wysokosc okna
ustawia je jako szerokosc i wysokosc niewidzialnej tabelki ktora blokuje całego layouta(z malymi wyjatkami z-index) abypodczas ladowania nie dało sie w nic kliknać...
*/
if (parseInt(navigator.appVersion)>3) {
if (navigator.appName=="Netscape") {
winW = window.innerWidth;
winH = window.innerHeight;
}
if (navigator.appName.indexOf("Microsoft")!=-1) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
}
document.getElementById('preloaderTable').style.height=winH-10; // odejmujemy 10 aby na IE nie pokazywaly sie scrolle;]
document.getElementById('preloaderTable').style.width=winW-10;
window.hideLoading = function()
{
document.getElementById('M_loading').style.visibility='hidden';
}
//-->
</script>
<div id="M_loading">
<table id="preloaderTable">
<tr><td align="center">
<table width="200" height="50" bgcolor="#de5522" style="vertical-align: middle; border:1px solid white; font-weight:bold; font-size :15px;"><tr><td align="center">Loading...<br/>
<br/><a href="javascript:hideLoading();" style="color:black; font-weight:normal;">Close Preloader</a>
</td></tr></table>
<br/><br/><br/>
</td></tr>
</table>
</div>
<!--LOADING FORM-->
<script language="javascript" type="text/javascript">
<!--
/*
SKRYPT pobiera szerokość i wysokosc okna
ustawia je jako szerokosc i wysokosc niewidzialnej tabelki ktora blokuje całego layouta(z malymi wyjatkami z-index) abypodczas ladowania nie dało sie w nic kliknać...
*/
if (parseInt(navigator.appVersion)>3) {
if (navigator.appName=="Netscape") {
winW = window.innerWidth;
winH = window.innerHeight;
}
if (navigator.appName.indexOf("Microsoft")!=-1) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
}
document.getElementById('preloaderTable').style.height=winH-10; // odejmujemy 10 aby na IE nie pokazywaly sie scrolle;]
document.getElementById('preloaderTable').style.width=winW-10;
window.hideLoading = function()
{
document.getElementById('M_loading').style.visibility='hidden';
}
//-->
</script>
No i krótki plik css zawierający style preloadera aby byl jako wycentrowany fixed

Kod
div#M_loading
{
position: absolute;
padding:0;
margin:0;
top: 0;
left: 0;
}
@media screen
{
div#M_loading
{
position: fixed;
}
* html
{
overflow-y: hidden;
}
* html body
{
overflow-y: auto;
height: 100%;
padding: 0;
font-size: 100%;
}
* html div#M_loading
{
position: absolute;
}
}
{
position: absolute;
padding:0;
margin:0;
top: 0;
left: 0;
}
@media screen
{
div#M_loading
{
position: fixed;
}
* html
{
overflow-y: hidden;
}
* html body
{
overflow-y: auto;
height: 100%;
padding: 0;
font-size: 100%;
}
* html div#M_loading
{
position: absolute;
}
}
System zamykający preloader (nalezy dodać pod koniec strony)
Kod
<script language="javascript" type="text/javascript">
<!--
hideLoading();
//-->
</script>
<!--
hideLoading();
//-->
</script>