JS: gestire multi window onload

Spesso quando creo i siti utilizzo pesantemente gli include server side, dapprima con coldfusion tramite <cfinclude…> poi con la chiamata di IIS <!– #include….–>, ma penso che chiunque sia interessato all’argomento conosco la cosa benissimo. Comunque piccolo esempio:

<!-- #include file="include/connection.asp" -->

Le parti che includono la maggior parte delle volte sono pezzi di layout condiviso in tutto il sito, tipo menù laterali, top, footer, etc. Uso spesso anche i template di Dreamweaver, ma se il materiale è in file esterni si rischia molto meno il cu*o in caso di rottura del template. E’ un attimo fare danni, specie se editiamo qualcosa fuori di DW.

Uno dei problemi nel caso di menù "esternizzati" è il precarimento delle immagini. Se facciamo tutto su DW alla fine più o meno si arrangia lui a sistemare il preload dentro al window.load, se però ce l’abbiamo in file diversi dobbiamo gestirlo a mano.

Partiamo da un concetto, dichiarazioni multiple di window.onload, non sono additive. Quindi l’ultima dichiarazione caricata dal browser è chiaramente quella che lui esegue. Per risolvere questo "conflitto" ho trovato uno script molto utile, niente di particolarmente complesso, ma sicuramente una ottima idea: Window Onload Manager (WOM).

Il funzionamento è molto semplice. Invece di caricare le varie azioni da fare al caricamento direttamente sull’evento onLoad, le carichiamo su un’array che alla fine richiamerà tutto le funzioni all’onload.

//questa funzione dice di caricare la funzione womGo all'onload
function womOn(){
  window.onload = womGo;
}
//wowGo, quando è chiamato, esegue tutte le funzioni inserite nell'array
function womGo(){
  for(var i = 0;i < woms.length;i++)
    eval(woms[i]);
}
//wowAdd aggiunge una funzione all'array
function womAdd(func){
  woms[woms.length] = func;
}
//dichiarazione globale dell'array
var woms = new Array();
//esempio...
womAdd('hideDiv("rightBox")');
womAdd('ajaxInit()');
womAdd('setHandler("tr","mo","onmouseover","rowHightlight")');
womOn();

Penso sia tutto chiarissimo. Vero?

Loading Facebook Comments ...

2 pensieri su “JS: gestire multi window onload

  1. Pingback: Dreamweaver Rollover

  2. Pingback: Toglie il peso di Disqus dalla pagina

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *