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

    Javascript..quando in head e quando in body?

    Quando un codice Javascript va inserito all'interno del tag head e quando all'interno del tag body?

  2. #2
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Non hai mai il dovere di inserire uno script in head, ma hai il dovere di inserirlo prima che venga richiamato, quindi head è spesso la posizione più comoda. Hai il dovere di inserirlo in body invece quando lo script modifica il contesto in cui è collocato, modificando il contenuto della pagina.

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da carlomarx
    Hai il dovere di inserirlo in body invece quando lo script modifica il contesto in cui è collocato, modificando il contenuto della pagina.

    mica vero, posso inserire uno script che modifica la pagina anche nell'head

    alexandra hai fatto una domanda che richiederebbe diverso tempo per essere approfondita (che probabilmente non ti servirebbe) ed è difficile riassumerla in poche parole

    fai una domanda specifica su un esempio concreto e da lì si può articolare una discussione
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da fcaldera

    mica vero, posso inserire uno script che modifica la pagina anche nell'head
    Certo, ma non se modifica il contesto in cui è collocato e questo contesto fa parte del contenuto della pagina. Se modifico il contenuto della pagina con un getElementById non sto modificando il contesto in cui si trova lo script. Se lo modifico con un document.write sto modificando il contesto in cui è inserito lo script. In tal caso posso inserirlo nell'head solo se le modifiche fanno parte del contesto, ovvero dell'head.

  5. #5
    Ciao, interessa anche a me questa discussione.
    Vorrei capire se una soluzione è meglio dell'altra anche considerando le performance di caricamento

  6. #6
    Puoi inserirlo dove preferisci come diceva Carlo, a patto che non ci sia un runtime (esecuzione del codice) la cui esecuzione richiede la esistenza di parti della pagina html destinate ad essere modificate o a fornire dati allo script.

    Se tu hai una funzione, la definizione della funzione ad esempio
    function foo(){alert('ciao');}

    può andare dove preferisci. La sua invocazione invece cioè
    foo()
    deve essere invocata sempre dopo che la definizione della funzione è già stata caricata in memoria, ed è questo e non altro il motivo per cui a scopi meramente cautelativi si preferisce dire che gli script vanno nell' head, che sta in cima ad una pagina. In realtà quello che si intende dire è che le DEFINIZIONI delle funzioni starebbero meglio nell' head, NON le loro invocazioni.

    Inoltre, se la definizione della funzione manipola oggetti html, allora la sua invocazione deve avvenire E dopo che la definizione della funzione è già stata caricata in memoria, E dopo gli oggetti html che manipola, esempio
    <head>
    <script>
    function foo(){alert(document.nomeform.elements.length);}
    </script>
    </head>

    <body>
    <form name="nomeform"><input type="text" /> <input type="checkbox" />
    </form>
    bla bla bla
    <script>
    foo();/*qui, DOPO che la form nomeform che la funzione usa è stata caricata tutta in memoria*/
    </script>
    bla bla bla
    </body>

    Tebuto fermo questo principio, puoi piazzare anche le definizioni dove credi a patto che le loro invocazioni o runtime avvengano solo DOPO che gli eventuali oggetti html che manipolano siano già stati caricati in memoria.

    In termini di benchmark diciamo cioè di velocità di caricamento non fa una gran differenza. In linea di massima un js esterno nell' head è caricato un po' più velocemente che se messo in altra maniera, ma si tratta di variazioni marginali di scarso impatto pratico: un js che fosse, faccio per dire, 300KB rallenterebbe la pagina comunque lo piazzi.

    Per il javascript non incapsulato da funzioni, che so un ciclo for esterno ad una funzione, puoi piazzarlo dove vuoi ma vale la stessa cautela: se ispeziona elementi della pagina web, allora deve essere stampato dopo che tali elementi sono già stati caricati in memoria.

  7. #7
    Ottima analisi TrueLies, tutto molto chiaro ed esauriente.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.