certo che esiste, e' stato anche alla base di un concorso
mettiamo che tu abbia una funzione addEvent
puoi settare un onload semplicemente cosi'codice:function addEvent(obj,ev,fn){ if(obj.addEventListener) { // metodo w3c obj.addEventListener(ev, fn, false); } else if(obj.attachEvent) { // metodo IE obj.attachEvent('on'+ev, fn); } else { // se i suddetti metodi non sono applicabili // se esiste gia' una funzione richiamata da quel gestore evento if(typeof(obj['on'+ev])=='function'){ // salvo in variabile la funzione gia' associata al gestore var f=obj['on'+ev]; // setto per quel gestore una nuova funzione // che comprende la vecchia e la nuova obj['on'+ev]=function(){if(f)f();fn()} } // altrimenti setto la funzione per il gestore else obj['on'+ev]=fn; } }
e accodare l' esecuzione di un altra funzione concodice:addEvent(window,'load',nomeFunzione);
se dovesse servire passare parametri a funzione() ti servi di una funzione genericacodice:addEvent(window,'load',nomeAltraFunzione);
a te interessa usarla per l' onload, ma potresti riutilizzarla per settare qualsiasi tipo di gestore evento, aggiungendo la funzione da eseguire a qualsiasi eventuale funzione gia' settata in altra maniera (gestori evento nel markup, via javascript "tradizionale", addEvent stesso)codice:addEvent(window,'load',function(){funzione('pippo')});
personalmente uso questo approccio tenendo a mente tutte le considerazioni fatte da ppk, che valgono ben una lettura se hai voglia di approfondirecodice:addEvent(document,'mousemove',funzioneAlMovimentoMouse); addEvent(document.getElementById('id_link'),'click',function(){allerta('ciao')});
ciao

Rispondi quotando