Dove devo inserire i tag <script> nel markup HTML?


1488

Quando si incorpora JavaScript in un documento HTML, dov'è il posto giusto per inserire i <script>tag e includere JavaScript? Mi sembra di ricordare che non dovresti metterli nella <head>sezione, ma anche posizionarli all'inizio della <body>sezione è male, poiché JavaScript dovrà essere analizzato prima che la pagina venga resa completamente (o qualcosa del genere). Questo sembra lasciare la fine della <body>sezione come un luogo logico per i <script>tag.

Allora, dove è il posto giusto per mettere i <script>tag?

(Questa domanda fa riferimento a questa domanda , in cui è stato suggerito che le chiamate alle funzioni JavaScript dovrebbero essere spostate da <a>tag a <script>tag. Sto usando specificamente jQuery, ma sono anche appropriate risposte più generali.)


nel caso in cui stai anche solo cercando una soluzione semplice e stai usando un generatore lato server come Jekyll, ti consiglio di includere lo script con esso. molto più semplice!
Cregox,

Risposte:


1864

Ecco cosa succede quando un browser carica un sito Web con un <script>tag su di esso:

  1. Recupera la pagina HTML (ad esempio index.html)
  2. Inizia ad analizzare l'HTML
  3. Il parser rileva un <script>tag che fa riferimento a un file di script esterno.
  4. Il browser richiede il file di script. Nel frattempo, il parser blocca e interrompe l'analisi dell'altro HTML sulla tua pagina.
  5. Dopo qualche tempo lo script viene scaricato e successivamente eseguito.
  6. Il parser continua ad analizzare il resto del documento HTML.

Il passaggio 4 causa una brutta esperienza per l'utente. Fondamentalmente il tuo sito Web interrompe il caricamento fino a quando non hai scaricato tutti gli script. Se c'è una cosa che gli utenti odiano, sta aspettando il caricamento di un sito Web.

Perché succede anche questo?

Qualsiasi script può inserire il proprio HTML tramite document.write()o altre manipolazioni DOM. Ciò implica che il parser deve attendere che lo script sia stato scaricato ed eseguito prima di poter analizzare in sicurezza il resto del documento. Dopotutto, lo script avrebbe potuto inserire il proprio HTML nel documento.

Tuttavia, la maggior parte degli sviluppatori JavaScript non manipola più il DOM durante il caricamento del documento. Invece, aspettano che il documento sia stato caricato prima di modificarlo. Per esempio:

<!-- index.html -->
<html>
    <head>
        <title>My Page</title>
        <script src="my-script.js"></script>
    </head>
    <body>
        <div id="user-greeting">Welcome back, user</div>
    </body>
</html>

Javascript:

// my-script.js
document.addEventListener("DOMContentLoaded", function() { 
    // this function runs when the DOM is ready, i.e. when the document has been parsed
    document.getElementById("user-greeting").textContent = "Welcome back, Bart";
});

Poiché il tuo browser non sa che my-script.js non modificherà il documento fino a quando non è stato scaricato ed eseguito, il parser interrompe l'analisi.

Raccomandazione antiquata

Il vecchio approccio alla risoluzione di questo problema consisteva nel mettere i <script>tag in fondo al tuo <body>, perché questo assicura che il parser non sia bloccato fino alla fine.

Questo approccio ha il suo problema: il browser non può iniziare a scaricare gli script fino a quando non viene analizzato l'intero documento. Per i siti Web più grandi con script e fogli di stile di grandi dimensioni, essere in grado di scaricare lo script il più presto possibile è molto importante per le prestazioni. Se il tuo sito Web non viene caricato entro 2 secondi, le persone accederanno a un altro sito Web.

In una soluzione ottimale, il browser inizierà a scaricare gli script il più presto possibile, analizzando allo stesso tempo il resto del documento.

L'approccio moderno

Oggi i browser supportano gli attributi asynce defersugli script. Questi attributi indicano al browser che è sicuro continuare ad analizzare mentre gli script vengono scaricati.

async

<script src="path/to/script1.js" async></script>
<script src="path/to/script2.js" async></script>

Gli script con l'attributo asincrono vengono eseguiti in modo asincrono. Ciò significa che lo script viene eseguito non appena viene scaricato, nel frattempo senza bloccare il browser.
Ciò implica che è possibile scaricare ed eseguire lo script 2 prima dello script 1.

Secondo http://caniuse.com/#feat=script-async , il 97,78% di tutti i browser lo supporta.

differire

<script src="path/to/script1.js" defer></script>
<script src="path/to/script2.js" defer></script>

Gli script con l'attributo defer vengono eseguiti in ordine (ovvero prima script 1, quindi script 2). Anche questo non blocca il browser.

A differenza degli script asincroni, gli script di differimento vengono eseguiti solo dopo che l'intero documento è stato caricato.

Secondo http://caniuse.com/#feat=script-defer , il 97,79% di tutti i browser lo supporta. Il 98,06% lo supporta almeno in parte.

Una nota importante sulla compatibilità del browser: in alcune circostanze IE <= 9 può eseguire script differiti non funzionanti. Se hai bisogno di supportare quei browser, leggi prima questo !

Conclusione

Lo stato dell'arte attuale è inserire script nel <head>tag e usare gli attributi asynco defer. Ciò consente di scaricare gli script il più presto possibile senza bloccare il browser.

La cosa buona è che il tuo sito web dovrebbe comunque essere caricato correttamente sul 2% dei browser che non supportano questi attributi mentre acceleri l'altro 98%.


63
Sono sorpreso che nessuno abbia citato la spiegazione di Google ... developers.google.com/speed/docs/insights/BlockingJS
Casey Falk

6
Non sono chiaro su cosa tocchi il DOM e cosa no. Puoi chiarire? È sicuro eseguire un caricamento asincrono su qualcosa come jquery.js?
Doug,

7
@Doug Ad esempio document.writeopera sulla dom. La domanda non è se uno script manipola il dom, ma quando lo fa. Finché tutte le manipolazioni del dom si verificano dopo che l' domreadyevento si è attivato, stai bene. jQuery è una libreria e come tale non - o non dovrebbe - manipolare il dom da solo.
Bart,

24
Questa risposta è fuorviante. I browser moderni non smettono di analizzare quando raggiungono un tag di script sincrono che può influire sull'HTML, smettono di eseguire il rendering / esecuzione e continuano l'analisi in modo ottimistico per iniziare a scaricare altre risorse che verranno probabilmente richieste successivamente se nessun HTML è interessato.
Fabio Beltramini,

40
Perché gli attributi asynce defernon vengono usati da nessuna parte? Voglio dire, ho visualizzato molte fonti HTML da Internet e non vedo gli attributi asynce da defernessuna parte. ...?
john cj,

239

Appena prima dell'etichetta del corpo di chiusura, come indicato su

http://developer.yahoo.com/performance/rules.html#js_bottom

Metti gli script in fondo

Il problema causato dagli script è che bloccano i download paralleli. La specifica HTTP / 1.1 suggerisce che i browser non scaricano più di due componenti in parallelo per nome host. Se offri le tue immagini da più nomi host, puoi ottenere più di due download in parallelo. Durante il download di uno script, tuttavia, il browser non avvierà altri download, anche su nomi host diversi.


7
Concordato con il concetto e la sua spiegazione. Ma cosa succede se l'utente inizia a giocare con la pagina. Supponiamo che io abbia un menu a discesa AJAX che inizierà a caricarsi dopo che la pagina è apparsa all'utente ma mentre sta caricando, l'utente fa clic su di essa! E se un utente "veramente impaziente" invia il modulo?
Hemant Tank

9
@Hermant Vecchio commento ma puoi fare il trucco disabilitando i campi per impostazione predefinita, quindi abilitandoli usando JS quando il DOM è completamente caricato. Questo è ciò che sembra fare Facebook al giorno d'oggi.
Novato,

2
Ho appena provato questo con Chrome, per verificare se è sempre lo stesso. È. Puoi controllare le differenze nel tempo di caricamento della pagina del tuo browser qui. stevesouders.com/cuzillion
cypher

46
Se questa è la migliore pratica, perché lo stack overflow include tutti i loro tag di script in <head>? :-P
Filippo,

10
In alcuni casi, specialmente in siti pesanti ajax, il caricamento in testa può effettivamente comportare tempi di caricamento più rapidi. Vedi: encosia.com/dont-let-jquerys-document-ready-slow-you-down (nota che la funzione "live ()" è obsoleta in jquery, ma l'articolo si applica ancora con "on ()" o " delegato "). Il caricamento in <head> potrebbe anche essere necessario per garantire il comportamento corretto, come sottolineato da @Hermant. Infine, modernizr.com/docs consiglia di inserire i suoi script in <head> per motivi spiegati sul suo sito.
Nathan,

77

I tag di script non bloccanti possono essere posizionati praticamente ovunque:

<script src="script.js" async></script>
<script src="script.js" defer></script>
<script src="script.js" async defer></script>
  • async lo script verrà eseguito in modo asincrono non appena sarà disponibile
  • defer lo script viene eseguito al termine dell'analisi del documento
  • async defer lo script ritorna al comportamento di differimento se asincrono non è supportato

Tali script verranno eseguiti in modo asincrono / dopo il documento pronto, il che significa che non è possibile farlo:

<script src="jquery.js" async></script>
<script>jQuery(something);</script>
<!--
  * might throw "jQuery is not defined" error
  * defer will not work either
-->

O questo:

<script src="document.write(something).js" async></script>
<!--
  * might issue "cannot write into document from an asynchronous script" warning
  * defer will not work either
-->

O questo:

<script src="jquery.js" async></script>
<script src="jQuery(something).js" async></script>
<!--
  * might throw "jQuery is not defined" error (no guarantee which script runs first)
  * defer will work in sane browsers
-->

O questo:

<script src="document.getElementById(header).js" async></script>
<div id="header"></div>
<!--
  * might not locate #header (script could fire before parser looks at the next line)
  * defer will work in sane browsers
-->

Detto questo, gli script asincroni offrono questi vantaggi:

  • Download parallelo di risorse : il
    browser può scaricare fogli di stile, immagini e altri script in parallelo senza attendere che uno script venga scaricato ed eseguito.
  • Indipendenza dall'ordine di origine :
    è possibile posizionare gli script all'interno di head o body senza preoccuparsi del blocco (utile se si utilizza un CMS). L'ordine di esecuzione è comunque importante.

È possibile aggirare i problemi dell'ordine di esecuzione utilizzando script esterni che supportano i callback. Molte API JavaScript di terze parti ora supportano l'esecuzione senza blocco. Ecco un esempio di caricamento asincrono dell'API di Google Maps .


2
Questa è la risposta corretta per oggi: l'utilizzo di questo approccio significa che è più facile mantenere i tuoi widget autonomi, non è necessario <head>includere la logica.
Daniel Sokolowski il

1
Sono confuso perché non è possibile utilizzare asynco deferquando compresi jQuery come specificato nel vostro secondo blocco: <script src="jquery.js" async></script>. Sei in grado di spiegare perché? Pensavo di aver bisogno del tag asincrono per le prestazioni, secondo la risposta accettata, in modo che la mia pagina possa essere caricata anche mentre jQuery sta ancora caricando]. Grazie!
elbowlobstercowstand il

3
@elbow Il 99% delle volte <script src=jquery.js>è seguito da $(function(){ ... })blocchi da qualche parte nella pagina. Il caricamento asincrono non garantisce che jQuery verrà caricato nel momento in cui il browser tenta di analizzare quei blocchi, quindi genererà $ non è definito errore (potresti non ottenere l'errore se jQuery è stato caricato dalla cache). Ho risposto a una domanda sul caricamento jQuery in modo asincrono e preservare $(function(){ ... }). Vedrò se sono riuscito a trovarlo, o puoi guardare questa domanda: stackoverflow.com/q/14811471/87015
Salman A

1
@SalmanA Grazie! Sì, cado in quel 99%. Ho prima bisogno jquerydi caricare lib, poi i miei .jsscript rimanenti . Quando dichiaro asynco defersul jquerytag dello script lib, i miei .jsscript non funzionano. Ho pensato che fosse $(function(){ ... })protetto, non credo. Soluzione attuale: non aggiungo deferasyncsu jqueryscript lib, ma aggiungo asyncsui miei .jsscript di follow-up . Nota: il motivo per cui sto facendo tutto questo è di rendere felice Google Page Speed. Grazie ancora per l'aiuto! Qualsiasi altro consiglio è il benvenuto. (O un link alla tua risposta precedente). :)
elbowlobstercowstand il

@elbow See stackoverflow.com/a/21013975/87015 , sarà solo darvi un'idea, ma non la soluzione completa. È possibile invece cercare "librerie caricatore asincrono jquery".
Salman A

38

La consulenza standard, promossa da Yahoo! Team di prestazioni eccezionali, è quello di mettere i <script>tag alla fine del corpo del documento in modo che non blocchino il rendering della pagina.

Esistono tuttavia alcuni approcci più recenti che offrono prestazioni migliori, come descritto in questa risposta sul tempo di caricamento del file JavaScript di Google Analytics:

Ci sono alcune fantastiche diapositive di Steve Souders (esperto di prestazioni lato client) su:

  • Diverse tecniche per caricare file JavaScript esterni in parallelo
  • il loro effetto sul tempo di caricamento e sul rendering della pagina
  • che tipo di indicatori "in corso" vengono visualizzati dal browser (ad es. "caricamento" nella barra di stato, cursore del mouse a clessidra).

25

Se stai usando JQuery, inserisci il javascript nel punto in cui lo trovi meglio e utilizzalo $(document).ready()per assicurarti che le cose siano caricate correttamente prima di eseguire qualsiasi funzione.

Nota a margine: mi piacciono tutti i miei tag di script nella <head>sezione in quanto sembra essere il posto più pulito.


14
in testa ... ehm? <header>?
Dan Lugg,

7
Nota che l'utilizzo $(document).ready()non significa che puoi posizionare il tuo JavaScript dove preferisci: devi comunque inserirlo dopo <script src=".../jquery.min.js">aver incluso jQuery, in modo che $esista.
Rory O'Kane,

2
Non è ottimale inserire tag di script nella sezione <head> - ciò ritarderà la visualizzazione della parte visibile della pagina fino al caricamento degli script.
CyberMonk,

No, @Dan, un headerelemento fa parte del contenuto del documento HTML e dovrebbe verificarsi una o più volte all'interno del tag head bodydell'elemento . The per metadati e dati non contenuti per il documento. E ', in questi giorni, con defere asyncun luogo ideale per tag script. headergli elementi devono contenere solo informazioni che descrivono la sezione del documento che la segue.
ProfK

1
@ProfK, Dan si riferiva alla domanda inedita originale quando la postò più di 4 anni fa. Come puoi vedere, la domanda è stata modificata un anno dopo.
kojow7,

18

L'approccio moderno nel 2019 utilizza gli script di tipo di modulo ES6 .

<script type="module" src="..."></script>

Per impostazione predefinita, i moduli vengono caricati in modo asincrono e rinviati. vale a dire che puoi posizionarli ovunque e verranno caricati in parallelo ed eseguiti quando la pagina termina il caricamento.

Le differenze tra uno script e un modulo sono descritte qui:

https://stackoverflow.com/a/53821485/731548

L'esecuzione di un modulo rispetto a uno script è descritta qui:

https://developers.google.com/web/fundamentals/primers/modules#defer

Il supporto è mostrato qui:

https://caniuse.com/#feat=es6-module


belle informazioni da aggiungere alla knowledge base
Sagar

1
Solo una nota che questo non funzionerà se stai solo provando cose sul tuo filesystem locale senza server. Almeno su Chrome viene visualizzato un errore di origine incrociata durante il tentativo di caricare js dall'HTML anche se entrambi hanno la stessa origine, il file system.
hippietrail,

11

XHTML non convaliderà se lo script si trova in un posto diverso dall'elemento head. si scopre che può essere ovunque.

Puoi rimandare l'esecuzione con qualcosa come jQuery in modo che non abbia importanza dove si trova (ad eccezione di un piccolo hit delle prestazioni durante l'analisi).


1
XHTML verrà convalidato con tag di script nel corpo, sia rigoroso che di transizione. I tag di stile tuttavia possono essere solo nella testa.
I.devries,

11
<script src="myjs.js"></script>
</body>

il tag script deve essere utilizzato sempre prima della chiusura del corpo o in basso nel file HTML .

quindi puoi vedere il contenuto della pagina prima di caricare il file js .

controllare questo se necessario: http://stevesouders.com/hpws/rule-js-bottom.php


2
Questo in realtà ha risposto alla domanda. Mi chiedevo che quasi tutti gli esempi pubblicati non fornissero mai il giusto contesto visivo di "fine della pagina"
Ken Ingram,

1
Questa risposta è molto fuorviante e molto probabilmente sbagliata. Gli articoli su Google e in MDN suggeriscono che JS sincrono (che è il caso qui) blocca sempre la costruzione e l'analisi del DOM, il che comporterà un primo rendering ritardato. Pertanto, non è possibile visualizzare il contenuto della pagina fino a quando il file JS non viene recuperato e termina l'esecuzione indipendentemente da dove si posiziona il file JS nel documento HTML purché sia ​​sincrono
Lingaraju EV

Fa inoltre riferimento a punti sollevati nel 2009 e non più pertinenti.
toxaq,

7

La risposta convenzionale (e ampiamente accettata) è "in fondo", perché quindi l'intero DOM sarà stato caricato prima che qualsiasi cosa possa iniziare l'esecuzione.

Ci sono dissidenti, per vari motivi, a partire dalla pratica disponibile per iniziare intenzionalmente l'esecuzione con un evento di caricamento della pagina.


6

Il posto migliore per mettere <script>tag è prima di chiudere </body>tag , in modo che il download e l'esecuzione di non bloccare il browser per analizzare il codice HTML nel documento,

Anche il caricamento esterno dei file js ha i suoi vantaggi, come verrà memorizzato nella cache dai browser e può accelerare i tempi di caricamento della pagina , separa il codice HTML e JavaScript e aiuta a gestire meglio la base di codice .

ma i browser moderni supportano anche altri modi ottimali come asynce deferper caricare javascriptfile esterni .

Asincrono e differisci

Normalmente l'esecuzione della pagina HTML inizia riga per riga. Quando viene rilevato un elemento JavaScript esterno, l'analisi HTML viene interrotta fino a quando un JavaScript non viene scaricato e pronto per l'esecuzione. Questa normale esecuzione della pagina può essere modificata utilizzandodefer e l' asyncattributo.

Defer

Quando viene utilizzato un attributo differito, JavaScript viene scaricato parallelamente all'analisi HTML ma verrà eseguito solo dopo aver completato l'analisi HTML.

<script src="/local-js-path/myScript.js" defer></script>

Async

Quando viene utilizzato l'attributo asincrono, JavaScript viene scaricato non appena lo script viene rilevato e dopo il download, verrà eseguito in modo asincrono (parallelamente) insieme all'analisi HTML.

<script src="/local-js-path/myScript.js" async></script>

Quando utilizzare quali attributi

  • Se lo script è indipendente da altri script ed è modulare, utilizzare async .
  • Se stai caricando script1 e script2 con async, entrambi verranno eseguiti in
    parallelo con l'analisi HTML, non appena scaricati
    e disponibili.
  • Se lo script dipende da un altro script, utilizzare deferper entrambi:
  • Quando script1 e script2 sono caricati in quell'ordine con defer, allora script1 è garantito per essere eseguito per primo,
  • Quindi script2 verrà eseguito dopo l'esecuzione completa di script1.
  • Deve farlo se script2 dipende da script1.
  • Se lo script è abbastanza piccolo ed è dipendente da un altro script di tipo, asyncutilizza lo script senza attributi e posizionalo sopra tutti gli asyncscript.

riferimento: knowledgehills.com


3

Dipende, se stai caricando uno script che è necessario per modellare la tua pagina / usando le azioni nella tua pagina (come il clic di un pulsante), è meglio posizionarlo in alto. Se il tuo stile è al 100% CSS e hai tutte le opzioni di fallback per le azioni dei pulsanti, puoi posizionarlo in fondo.

O la cosa migliore (se non è un problema) è che puoi creare una casella di caricamento modale, posizionare il tuo javascript nella parte inferiore della pagina e farlo scomparire quando viene caricata l'ultima riga dello script. In questo modo puoi evitare che gli utenti utilizzino le azioni nella tua pagina prima che gli script vengano caricati. E anche evitare lo stile improprio.


3

L'inclusione degli script alla fine viene utilizzata principalmente dove i contenuti / gli stili del sito Web devono essere mostrati per primi.

compresi gli script nella testa carica gli script in anticipo e possono essere utilizzati prima del caricamento dell'intero sito Web.

se gli script vengono inseriti alla fine, la convalida avverrà solo dopo il caricamento di interi stili e design che non è apprezzato per i siti Web a risposta rapida.


2

A seconda dello script e del suo utilizzo, il migliore possibile (in termini di caricamento della pagina e tempo di rendering) potrebbe essere quello di non utilizzare un <script> -tag convenzionale di per sé, ma di innescare dinamicamente il caricamento dello script in modo asincrono.

Esistono alcune tecniche diverse, ma la più semplice è utilizzare document.createElement ("script") quando viene attivato l'evento window.onload. Quindi lo script viene caricato per primo quando viene eseguito il rendering della pagina stessa, senza influire sul tempo in cui l'utente deve attendere che appaia la pagina.

Ciò richiede naturalmente che lo script stesso non sia necessario per il rendering della pagina.

Per ulteriori informazioni, vedere il post Script di accoppiamento asincrono di Steve Souders (creatore di YSlow ma ora su Google).


2
  • Se ti preoccupi ancora molto del supporto e delle prestazioni in IE <10, è preferibile SEMPRE rendere i tag degli script gli ultimi tag del tuo corpo HTML. In questo modo, sei certo che il resto del DOM è stato caricato e non lo bloccherai né eseguirai il rendering.

  • Se non ti interessa più di IE <10, potresti voler mettere i tuoi script in testa al documento e usarli deferper assicurarti che vengano eseguiti solo dopo che il DOM è stato caricato ( <script type="text/javascript" src="path/to/script1.js" defer></script>). Se vuoi comunque che il tuo codice funzioni in IE <10, non dimenticare di racchiudere il tuo codice in modo window.onloaduniforme, però!


Nella risposta accettata, questa viene definita "raccomandazione antiquata". Se lo intendi ancora, probabilmente dovresti produrre qualche riferimento per sostenerlo.
dakab,

1

Lo script blocca il caricamento del DOM fino a quando non viene caricato ed eseguito.

Se si posizionano gli script alla fine di <body>tutto il DOM, è possibile caricarli e renderizzarli (la pagina "verrà visualizzata" più velocemente). <script>avrà accesso a tutti quegli elementi DOM.

D'altra parte posizionandolo dopo l' <body>avvio o sopra eseguirà lo script (dove non ci sono ancora elementi DOM).

Stai includendo jQuery, il che significa che puoi posizionarlo dove desideri e utilizzare .ready ()


1

Penso che dipenda dall'esecuzione della pagina web. Se la pagina che si desidera visualizzare non può essere visualizzata correttamente senza prima caricare JavaScript, è necessario includere prima il file JavaScript. Ma se è possibile visualizzare / eseguire il rendering di una pagina Web senza scaricare inizialmente il file JavaScript, è necessario inserire il codice JavaScript nella parte inferiore della pagina. Perché emulerà un caricamento rapido della pagina e dal punto di vista dell'utente sembra che quella pagina si stia caricando più velocemente.


1

È possibile posizionare la maggior parte dei <script>riferimenti alla fine di <body>,
ma se nella pagina sono presenti componenti attivi che utilizzano script esterni, la
loro dipendenza (file js) dovrebbe precedere quella (idealmente nel tag head).


1

Prima della fine del tag body per prevenire e bloccare l'interfaccia utente.


-1

Alla fine del documento HTML

In modo che non abbia effetto sul caricamento del documento HTML nel browser al momento dell'esecuzione.


-1

Il posto migliore per scrivere il JavaScriptcodice è alla fine del documento dopo o subito prima del </body>tag per caricare prima il documento e quindi eseguire il codice js.

<script> ... your code here ... </script>
</body>

E se scrivi JQueryquanto segue può essere nel documento principale e verrà eseguito dopo il caricamento del documento:

<script>
$(document).ready(function(){
   //your code here...
});
</script>

lanciaSyntaxError
Raz

La tua risposta non era sbagliata ma aveva un disperato bisogno di essere aggiornata.
Paul Carlton,

-2

Per me ha più senso includere lo script dopo l'HTML. Perché la maggior parte delle volte ho bisogno di caricare Dom prima di eseguire il mio script. Potrei metterlo nel tag head ma non mi piace tutto il listener di caricamento del documento overhead. Voglio che il mio codice sia breve, dolce e di facile lettura.

Ho sentito che le vecchie versioni di Safari sono state molto strane quando ho aggiunto la tua sceneggiatura al di fuori del tag head ma dico a chi importa. Non conosco nessuno che usi quella vecchia merda, vero?

Buona domanda a proposito.


-6

Puoi posizionare dove vuoi gli script e uno non è meglio di un'altra pratica.

la situazione è la seguente:

Il caricamento della pagina in modo lineare, "dall'alto verso il basso", quindi se si mette lo script in testa si assicura che inizi a caricarsi prima di tutto, ora, se lo si inserisce nel corpo mescolato con il codice può causare il caricamento della pagina in modo sgradevole.

identificare le buone pratiche non dipende da dove.

per supportarti, menzionerò quanto segue:

puoi posizionare:

e la pagina verrà caricata in modo lineare

la pagina viene caricata in modo asincrono con altri contenuti

il contenuto della pagina verrà caricato prima e dopo il completamento del caricamento degli script caricati

la buona pratica qui sarebbe, quando implementerà ciascuno?

Spero di essere stato utile, qualsiasi cosa mi risponda a questo problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.