Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [windows.onload] aggiungere più funzioni

    forrei poter aggiungere quando e dove mi pare, funzioni o istruzioni da eseguire al termine del caricamento della pagina. L'ordine? non importa, mi basta che alla fine siano tutte eseguite... ma credo che se metto sparse per il documento queste istruzioni

    windows.onload=fun1();
    ...
    windows.onload=fun2();
    ...
    windows.onload=fun3();

    credo che fun3 cancelli fun2 e fun1 ....almeno credo così a fiuto

    non vorrei ricorrere all'unica funzione windows.onload=init() che raggruppi tutte le istruzioni, anche perchè avendo un sito a moduli inclusi con php la cosa non sarebbe possibile

    non è che esista di già un qualcosa per accodare le funzioni da eseguire?

    :master:
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    certo che esiste, e' stato anche alla base di un concorso

    mettiamo che tu abbia una funzione addEvent
    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;
    	}
    }
    puoi settare un onload semplicemente cosi'
    codice:
    addEvent(window,'load',nomeFunzione);
    e accodare l' esecuzione di un altra funzione con
    codice:
    addEvent(window,'load',nomeAltraFunzione);
    se dovesse servire passare parametri a funzione() ti servi di una funzione generica
    codice:
    addEvent(window,'load',function(){funzione('pippo')});
    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(document,'mousemove',funzioneAlMovimentoMouse);
    addEvent(document.getElementById('id_link'),'click',function(){allerta('ciao')});
    personalmente uso questo approccio tenendo a mente tutte le considerazioni fatte da ppk, che valgono ben una lettura se hai voglia di approfondire

    ciao

  3. #3
    orgasmico VVoVe:

    mi è solo nuova questa dicitura:

    addEvent(window,'load',function(){funzione('pippo')});
    mo' me la studio...
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  4. #4
    favolosa...per me è degna di essere elevata a grado "pillola" :rollo:


    CODICE ===========================================
    non ho trovato spiegazioni a questa sintassi:

    addEvent(window,'load',function(){funzione('pippo')});

    obj['on'+ev]=function(){if(f)f();fn()}
    questa roba fine e sintetica mi fa godere...

    a fiuto la capisco così: per infilare funzioni dentro variabili/parametri si deve creare una funzione al volo senza nome (che difatti in questo caso non servirebbe) in cui più o meno ci infiliamo quel che ci pare...

    ma è una sintassi accettata? o è ....deprecata?

    inoltre if(f)f();fn() restituisce f();fn() se c'è f, altrimenti fn() se non c'è



    OGGETTO ===========================================
    nelle guide di html.it si usa sempre document.onLoad ...tuttavia ho scoperto nei reference javascript che tale evento è collegato solo a window e non a document ...non so se ciò vi può esser d'aiuto
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    coretto, sono funzioni anonime, accettatissime
    il problema e' che non avendo nome chiaramente non puoi richiamarle altrove

    in entrambi i casi puoi usarle perche' assegnando un gestore evento via javascript non potresti ne' passare valori come argomento della funzione, ne' richiamare piu' di una funzione

    window.onload=nomeFunzione
    dove
    function nomeFunzione(){
    alert('non accetto argomenti');
    }

    la spiegazione e' qui
    http://javascript.html.it/articoli/l...-javascript/2/
    punti 3 e 4 "da osservare"

    riguardo il document.onload credo sia rimasto da vecchie versioni di javascript,
    il gestore evento onload mi risulta valido solo su image, layer e window
    e solo su questo tipo di oggetti andrebbe settato per ottenere massima compatibilita'

    ciao

  6. #6
    fantavoloso

    ho lett e capit: metterci una funzione con i parametri in realtà assegnerebbe il risultato immediato, mentre nel caso di cui sopra si assegnerebbe un richiamo alla funzione da eseguire all'avveramento dell'evento




    tanx

    ps: eddai ...mettila come pillola
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Jarno
    ps: eddai ...mettila come pillola
    fatto

  8. #8
    la cosa mi ha rivoluzionato un po' tutto.
    ri-ragionandoci sopra ...allora... window.onload è sbagliato nel normale uso (non per quello che ho chiesto qui) ?

    cioè se faccio
    window.onload=funzione1(); dovrebbe dare errore perchè assegna alla finestra il risultato di funzione1

    mentre dovrei scrivere window.onload=function(){funzione1()} per eseguire semplicemente la funzione1 vero?

    :master:
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Jarno
    window.onload è sbagliato nel normale uso (non per quello che ho chiesto qui) ?
    no, perche' dovrebbe essere sbagliato?
    cioè se faccio
    window.onload=funzione1(); dovrebbe dare errore perchè assegna alla finestra il risultato di funzione1
    e siamo d' accordo, non viene atteso il verificarsi dell' evento per eseguire la funzione

    per via di quelle 2 parentesi

    mentre dovrei scrivere window.onload=function(){funzione1()} per eseguire semplicemente la funzione1 vero?
    puoi anche fare cosi' ma, ancora una volta, se non serve passare valori come argomenti della funzione basta
    window.onload=funzione1;

    ciao

  10. #10
    Mi permetto
    Un solo appunto a questo istruttivo
    thread :
    Codice PHP:
    function addEvent(obj,ev,fn){
        if(
    obj.addEventListener) {
            
    // metodo w3c
            
    obj.addEventListener(evfnfalse);
        } else if(
    obj.attachEvent) {
            
    // metodo IE
            
    obj.attachEvent('on'+evfn);
        } 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;
        }


    Se nella funzione non si mettono i return
    Opera va in confusione una cosa del genere
    per intendersi

    Codice PHP:
    function addEvent(elmevTypefnuseCapture){
        if (
    elm.addEventListener){
                
    elm.addEventListener(evTypefnuseCapture);
                return 
    true;
        } else if (
    elm.attachEvent) {
            var 
    elm.attachEvent('on' evTypefn);
            return 
    r;
        } else {
            
    elm['on' evType] = fn;
        }
    }; 




    [OT]
    Ps.

    Se ne avete voglia potete controllare se
    la funzione che ho postato vi dà un warning
    the function addEvent does not always return a value.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.