Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178

    inizializzare script prima che la pagina sia caricata

    l'argomento è sempre il body switcher che stò utilizzando, dal momento che è uno script java che deve essere scaricato sul pc(altrimenti non sarebbe programmazione lato-client...) c'è il problema che per un attimo è visibile lo stile di default prima che il codice venga eseguito-legga il cookie-e imposti lo stile scelto di conseguenza, questo credo perchè anche se lo script è caricato subito non viene eseguito altrettanto rapidamente...

    vorrei far partire lo script non appena questo viene caricato, prima di qualunque altro elemento della pagina, ho inserito il link relativo allo stesso proprio sotto il tag head in cima alla pagina, pensavo di metterci subito dopo qualcosa tipo :

    codice:
    window.onload = switcher.init;
    ma non sò come mettere in pratica...nel senso, cosa devo richiamare per farlo partire "manualmente"? il fatto è che la funzione che si occupa di leggere il cookie non ha un nome e credo che aggiungendone uno manualmente potrei compromettere il funzionamento dello script, c'è quindi una sintassi per far partire un intero script appena la finestra inizia a caricare?
    è troppo impegnativo...

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e' il caso tu faccia capire bene di che codice stiamo parlando, magari un link dove vedere il tutto in azione o da dove hai preso lo script in questione

  3. #3
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178
    si tratta di iotbs2 (invasion of the body switcher), una soluzione java per cambiare uno o anche più fogli di stile, ho ripiegato su java perchè la soluzione php che avevo indicato nel mio post precedente non ha funzionato, e questo switch si è rivelato estremamente vertsatile, alla seguente pagina ci sono tutti gli esempi, il download e la documentazione per l'utilizzo(però non è molto facile capire bene le nomenclature da rispettare, io c'ho messo 2 giorni per farlo funzionare correttamente...)

    http://brothercake.com/site/resources/scripts/iotbs/

    siccome mi serviva che nella pagina contatti in cui ospito un un iframe con id cambiasse a sua volta lo stile quando selezionato ho apportato una modifica nel file "directors.js" che crea i link per selezionare gli stili in modo che cliccando sui link oltre a cambiare lo stile se viene trovato l'id che identifica l'iframe questo viene refreshato(la pagina caricata nel frame si trova sul mio dominio e fà a sua volta riferimento agli script come la pagina parent, così al refresh legge il cookie con la variabile scelta e cambia lo stile mettendo il css relativo, ho creato un unico foglio di stile che regola tutte le pagine del sito per facilitarmi la vita).

    l'unica pecca, come dicevo all'inizio, è quel "flash" dello stile di default navigando da una pagina all'altra(presente come normale link nel codice della pagina e che viene selezionato se non c'è un cookie da leggere o se java è disattivato, evitando il pericolo che non venga importato nessuno stile nel caso lo switcher non sia utilizzabile), si verifica più in explorer che negli altri browser, ma è comunque bruttino da vedere...

    cercando per una soluzione ho letto che anche mettendo gli href degli script in cima alla pagina anche se questi vengono scaricati per primi ciò non significa che siano i primi ad essere eseguiti, quindi vorrei fare in modo che quando la finestra è caricata la primissima cosa che deve essere eseguita è lo script in modo che legga il cookie e imposti immediatamente lo stile


    sò che è possibile richiamare delle determinate funzioni al caricamento della finestra (window.onload = function name() ma nessuna delle funzioni contenute nello script a un nome identificativo...
    nella cartella "src" dello zip ci sono gli script non compattati con le istruzioni dei passaggi a commento, credo che la funzione che legge il cookie sia quella nel core.js da riga 231(//read a cookie method) a 277 (return this.cookie....
    è troppo impegnativo...

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    ok, ora e' tutto piu' chiaro
    lo script in questione gia' presenta un escamotage per eseguire prima possibile la sostituzione del foglio di stile in uso
    la sostituzione dovrebbe gia' avvenire in un momento precedente il window.onload
    (che si attiva al completo caricamento della pagina, immagini incluse, troppo tardi)
    questo avviene ma a quanto pare non e' abbastanza efficace

    identifica alla fine del core.js la parte compresa tra function domReady(){ e };domReady();
    e sostituiscila con questa funzione oncontent
    (discussa qui) e opportuno richiamo

    in pratica quello che devi aggiungere e'
    codice:
    function onContent(f){	// (C) Andrea Giammarchi - webreflection.blogspot.com
    var a,b=navigator.userAgent,d=document,w=window,
    c="__onContent__",e="addEventListener",o="opera",r="readyState",
    s="<scr".concat("ipt defer src='//:' on",r,"change='if(this.",r,"==\"complete\"){this.parentNode.removeChild(this);",c,"()}'></scr","ipt>");
    w[c]=(function(o){return function(){w[c]=function(){};for(a=arguments.callee;!a.done;a.done=1)f(o?o():o)}})(w[c]);
    if(d[e])d[e]("DOMContentLoaded",w[c],false);
    if(/WebKit|Khtml/i.test(b)||(w[o]&&parseInt(w[o].version())<9))
    (function(){/loaded|complete/.test(d[r])?w[c]():setTimeout(arguments.callee,1)})();
    else if(/MSIE/i.test(b))d.write(s);
    };
    onContent(iotbs);
    ciao

  5. #5
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178
    funziona che è una meraviglia, Content comanda prima di tutti...

    il flash però persiste ora solo nella pagina contatti , in explorer è sparito dal refresh del iframe ma accedendo alla pagina html c'è un breve flash simultaneo in entrambe(html circostante e pagina frame), mentre in opera e firefox la pagina html và bene ma il flash si verifica solo nella pagina iframe...che sia dovuto al fatto che lo stesso script viene richiamato simultaneamente da due documenti?

    ho provato a duplicare lo script e cambiare i link nella pagina iframe ma il risultato è sempre lo stesso, allora cosa sarà...
    è troppo impegnativo...

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    lascia il link

    perche' usi un iframe per questa pagina contatti?
    un iframe contiene un documento a se' stante, e' come se un iframe fosse una finestra diversa,
    e' normale che carichi il contenuto in tempi diversi rispetto a tutto il resto e che ci sia comunque un momento in cui non ha ancora alcuno stile applicato (probabilmente con sfondo bianco)

  7. #7
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178
    errore mio, credevo che quando veniva eseguita l'operazione di invio tutta la pagina venisse sostituita dai soli dati di echo facendo sparire tutta la grafica circostante...per questo ho usato l'iframe, ma mi ci hai fatto riflettere, ho fatto ora una prova inserendo il codice php+form ingabbiati all'interno del div contenitore, e funziona tutto perfettamente, niente flash, niente ritardi, niente sparizioni, perfetto!!

    ma è comparso un altro problema...ovviamente la pagina ora non è più contatti.html ma contatti.php, non sò per quale motivo ma ora java all'interno della pagina non sembra funzionare più, i link per scegliere lo stile non sono più cliccabili, e lo script che avevo inserito per refreshare solo l'immagine del mio stato skype non funziona più...php e java non possono funzionare insieme(ma ne dubito altrimenti neppure cambierebbe lo stile col cookie) o devo usare qualche accorgimento?

    il link è il seguente (la grafica e tutto il resto sono solo temporanei per prova)
    è troppo impegnativo...

  8. #8
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178
    ho fatto delle prove e non sò perchè dopo aver premuto invio i link tornano cliccabili, ma tornando al form(click indietro dello script) si inchiodano di nuovo, inoltre anche dopo aver cliccato su invio shadowbox (che dovrebbe attivarsi cliccando sul logo/scritta di creative commons) resta bloccato...da cosa dipende?
    è troppo impegnativo...

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    installati, se non l' hai gia', l' estensione firebug per firefox
    riporta errori in vari punti: elem is null in menufade.js, refreshIt non definito, qualche riferimento vecchio all' iframe...
    insomma a mente lucida vedi cosa avevi aggiunto e che ora e' cambiato

    ciao

  10. #10
    Utente di HTML.it L'avatar di TeraBIT
    Registrato dal
    Dec 2005
    Messaggi
    178
    grazie per la segnalazione, l'ho installato ma credo mi ci vorrà un pò per prenderci la mano...
    l'unica cosa cambiata è l'id del mailForm che ho provveduto a rimuovere dal file director.js, ora non capisco come ma i pulsanti per selezionare lo stile rifunzionano di nuovo, shadowbox resta bloccato, e solo in explorer lo script per refreshare l'immagine rifunziona...

    resta da capire con cosa confliggono shadowbox e il refresher...
    è troppo impegnativo...

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.