Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Caricamento menu js prima del resto della pagina

    Salve a tutti,

    ho notato che menu espandibili come questo e questo presi da html.it, una volta caricati sul web hanno un grave difetto:
    se la pagina è particolarmente pesante (es. con molte immagini) il file .js non si carica finchè tutte le immagini non sono caricate : capite bene che questo è un enorme svantaggio perchè ad esempio nel primo link che ho messo, le voci del menu non sono cliccabili istantaneamente costringendo l'utente a dover aspettare il caricamento dell'intera pagina prima di poterla cambiare.

    Fate la prova voi stessi prendendo l'esempio nel primo link, aggiungendo un'immagine pesante subito dopo il menu e hostando il tutto su un sito web (ovviamente il problema non si pone sul pc di casa dato che il caricamento è praticamente istantaneo).

    Poichè non so programmare in javascript volevo sapere se c'è un modo per impostare il caricamento dei file .js prima del resto della pagina o se esiste una strada per creare un menu espandibile e richiudibile a livelli (con anche link diretti di primo livello) che non soffra del problema sopra citato (non necessariamente in javascript).

    Un grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    "onDOMLoad, onload al caricamento del solo xhtml", trovi il link in "script/discussioni utili"

  3. #3
    Ho letto l'articolo onDOMLoad, onload al caricamento del solo xhtml ma sinceramente non ho capito un granchè: mi potresti spiegare precisamente cosa devo fare? Devo collegare un altro file .js alla pagina html dove c'è il menu? Se si quale dei tanti codici che ho trovato nell'articolo devo inserire?
    Scusa ma non sono proprio pratico di javascript.

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    a leggere la discussione si capisce che lo script da usare e solo quello dell' ultimo post, aggiungi solo quello
    codice:
    function onContent(f){//(C)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);
    };
    poi, per esempio, nello script di questo http://javascript.html.it/articoli/l...u-espandibile/
    sostituisci
    window.onload = initMenu;
    con
    onContent(initMenu);

  5. #5
    Ok grazie mille dell'aiuto ora funziona perfettamente con i browser che ho testato (firefox, ie, chrome, safari e opera).
    In breve ho creato un file ottimizza.js e ho inserito il codice che hai postato, dopodichè l'ho collegato all'html con:
    codice:
    <script type="text/javascript" src="ottimizza.js"></script>
    Se non ti chiedo troppo mi piacerebbe sapere il perchè del
    sostituisci
    window.onload = initMenu;
    con
    onContent(initMenu);
    ...e se volessi applicare la stessa cosa ad un menu come il secondo che ho linkato (cioè questo) che non ha window.onload = initMenu??

    Un'ultima cosa: il codice che mi hai dato potrebbe avere dei problemi con l'uscita delle nuove versioni dei browser e quindi non essere più supportato?

    Grazie ancora.

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    onContent(quello che c'e' nel window.onload)

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    onload scatta al completo caricamento
    questo onContent setta, in vari modi, una sorta di gestore evento che scatta al caricamento del solo xhtml
    e gli devi passare cosa fare quando scatta

    potrebbe diventare obsoleto/non funzionare, tutto quello che scrivi potrebbe
    se vuoi correre meno rischi, tutte le piu' diffuse librerie javascript hanno un gestore evento equivalente e le librerie sono piu' attente ai cambiamenti nei dispositivi
    fatto e' che qualsiasi libreria ha un certo peso e se non si usa appieno e' un peso inutile,
    se la si usa allora non usi menu' come quelli che hai linkato

  8. #8
    Perfetto ora ho capito...grazie mille!

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.