Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499

    Onload in pagine interne

    Io carico delle pagine con ajax all'interno della pagina madre. Ho la necessità di inizializzare un <body onload="initScrollLayer()"> all'interno di una pagina che carico.
    Se l'onload lo inerisco nel body della pagina madre, non funziona.
    Come faccio a richiamarlo all'interno della pagina che apro?

  2. #2
    La funzione initScrollLayer deve essere richiamata quando la richiesta è finita, quindi all'interno del gestore onreadystatechange e in particolare subito dopo la riga che modifica l'innerHTML del box che viene modificato.

  3. #3
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    potresti farmi un esempio?

  4. #4
    Ho trovato questa soluzione che adotto nelle mie pagine.
    Come ben sai una richiesta XMLHTTP prevede l'assegnazione di una funzione al cambio di status (onreadystatechange) e, difatti, se analizzi il codice della richiesta XMLHTTP troverai qualcosa tipo:
    codice:
    XHR.onreadystatechange=function(){
    /*codice da eseguire quando lo status della richiesta cambia*/
    /*a volte è una funzione tipo handleResponse()*/
    }
    A questo punto, dopo un eventuale controllo del readyState che deve essere 4 e dello status che deve essere 200, possiamo eseguire una funzione qualsiasi che chiameremo niaFunzione.

    Avremo quindi:
    codice:
    XHR.onreadystatechange==function(){
    /*...*/
    miaFunzione;
    }
    che andremo a definire come vuota in principio:
    codice:
    var miaFunzione=function(){
    
    }
    Quando vogliamo far eseguire una funzione al caricamento della pagina con Ajax andremo a sovrascrivere la funzione:
    codice:
    var miaFunzione=function(){
    faiQualcosa();
    qualcosAltro();
    }
    e così via.
    Alternativa:
    inserire lo script in un file esterno, inserire il tag script nel documento da caricare ed utilizzare una funzione per aggiungere dinamicamente lo script (nota per Mega69: risolto il problema della non intrusività:
    codice:
    /* H5N1 &copy;2005 */
    checkDOMforscripts = function(id){
    theDiv=document.getElementById(id);
    theScripts=theDiv.getElementsByTagName("SCRIPT");
    	for (i=0;i<theScripts.length;i++){
    	url=(theScripts[i].getAttribute("src"));
    	var scriptToLoad = document.createElement("script");
    	   scriptToLoad.src = url;
    	   scriptToLoad.type="text/javascript";
    	   document.getElementsByTagName("head")[0].appendChild(scriptToLoad);
    	   theDiv.removeChild(theScripts[i]);
    	}
    }
    basta aggiungere questo al nostro motore Ajax nel readystatechange.
    In questo modo il response è privo di elementi script invasivi

  5. #5
    Ciao,
    ho visto la tua soluzione e non è male :-)

    Ma non c'è modo di far eseguire script che non sono in un file separato ? Il mio problema è che lo script viene generato da una pagina asp e non posso fare un file js per ogni utente collegato ... verrebbe fuori un casino :-(

    Ciao e grazie mille

    Bruce
    _____________

    Bruce

    www.palestracft.it

  6. #6

  7. #7
    Ciao, ma il codice

    Codice PHP:
    /* H5N1 ©2005 */
    checkDOMforscripts = function(id){
    theDiv=document.getElementById(id);
    theScripts=theDiv.getElementsByTagName("SCRIPT");
        for (
    i=0;i<theScripts.length;i++){
        
    url=(theScripts[i].getAttribute("src"));
        var 
    scriptToLoad document.createElement("script");
           
    scriptToLoad.src url;
           
    scriptToLoad.type="text/javascript";
           
    document.getElementsByTagName("head")[0].appendChild(scriptToLoad);
           
    theDiv.removeChild(theScripts[i]);
        }

    funziona anche su IE ?
    Con FF va un meraviglia con con IE7 non va.
    In pratica non trova mai i tag con nome script ... e non capisco perché ... ho provato anche a scrivere SCRIPT in minuscolo come nel file html ma niente da fare ...

    Bruce
    _____________

    Bruce

    www.palestracft.it

  8. #8
    ... la cosa strana è che se provo a scrivere al posto di script un altro nome di tag presente nella pagina lo trova ...
    _____________

    Bruce

    www.palestracft.it

  9. #9
    Il codice è testato su IE6 e 7, Firefox 2.0.0.x e DeerPark , Opera, Safari e Konqueror.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.