Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-06-2013, 17:22   #1
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
[Javascript/HTML] Posizionamento script

Traendo spunto da questo articolo: http://www.html5rocks.com/en/tutoria...cript-loading/ vorrei bene capire una questione sul caricamento degli script.
Mi pare di capire, dopo aver letto l'articolo, che alla fine della fiera se si vuole creare una pagina e inserirci degli script senza rallentare il caricamento di questa è opportuno inserire gli script al fondo della pagina, prima del <body/>, invece che nell'head: questo se si cerca un'implementazione che vada bene a tutti i browser.
Tuttavia, mi domandavo quale fosse il significato di questa manovra se, per esempio, utilizzo un framework come jQuery e racchiudo tutto il mio codice dentro il famoso:
Codice:
$(document).ready()
O, meglio ancora:
Codice:
$(window).load()
Se è vero che le due istruzioni eseguono il codice JS solo quando la struttura intera è stata completamente caricata, questa mossa di caricare gli script a fondo pagina ha ancora senso usando queste due istruzioni?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2013, 18:04   #2
OoZic
Senior Member
 
L'Avatar di OoZic
 
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
con document ready aspetta solo che il DOM sia pronto.

con window load aspetta anche immagini ed elementi grafici, almeno io sapevo cosi.

riguardo la domanda se è ancora necessario utilizzarlo, pur mettendolo alla fine della pagina, trovi una risposta sensata qui:
http://stackoverflow.com/questions/1...ready-function

in sostanza dice che se metti lo script a fine pagina non è necessario usare document ready in quanto arrivati a quel punto il DOM è già caricato.

discorso diverso per plugin o script da caricare in posizioni diverse.
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2013, 19:07   #3
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da OoZic Guarda i messaggi
con document ready aspetta solo che il DOM sia pronto.

con window load aspetta anche immagini ed elementi grafici, almeno io sapevo cosi.

riguardo la domanda se è ancora necessario utilizzarlo, pur mettendolo alla fine della pagina, trovi una risposta sensata qui:
http://stackoverflow.com/questions/1...ready-function

in sostanza dice che se metti lo script a fine pagina non è necessario usare document ready in quanto arrivati a quel punto il DOM è già caricato.

discorso diverso per plugin o script da caricare in posizioni diverse.
Si, la differenza da ready e window.load è quella.
Quindi ne deduco che quell'articolo sia per chi scrive ancora in JS pure senza fare uso di frameworks..
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2013, 20:03   #4
OoZic
Senior Member
 
L'Avatar di OoZic
 
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
scusa ma non ho capito cosa intendi.
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2013, 21:13   #5
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da OoZic Guarda i messaggi
scusa ma non ho capito cosa intendi.
Ho sbagliato a scrivere, non pure, puro
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2013, 21:23   #6
OoZic
Senior Member
 
L'Avatar di OoZic
 
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
Quote:
Originariamente inviato da kwb Guarda i messaggi
Si, la differenza da ready e window.load è quella.
Quindi ne deduco che quell'articolo sia per chi scrive ancora in JS puro senza fare uso di frameworks..
no in realtà ogni volta che si parla di $(document).ready si sta parlando di jquery (framework).

la $ da sola non vuol dire niente in javascript.

quindi come ti dicevo , sia che tu usi jquery sia che non lo usi, se metti lo script alla fine del documento (prima del /body) non ti serve fare document.ready o window.load nel caso si tratti qualcosa che deve agire sul DOM in quanto a quel punto è già caricato.

se si tratta di immagini, plugin o quant'altro discorso diverso.
__________________
> This is me <
When you gaze long into an abyss the abyss also gazes into you.
OoZic è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2013, 15:28   #7
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Il punto secondo me è un altro, ed è spiegato all'inizio dell'articolo in "My first script include"
Quote:
Codice:
<script src="//other-domain.com/1.js"></script>
<script src="2.js"></script>
Ahh, blissful simplicity. Here the browser will download both scripts in parallel and execute them as soon as possible, maintaining their order. “2.js” won’t execute until “1.js” has executed (or failed to do so), “1.js” won’t execute until the previous script or stylesheet has executed, etc etc.

Unfortunately, the browser blocks further rendering of the page while all this is happening. This is due to DOM APIs from “the first age of the web” that allow strings to be appended onto the content the parser is chewing through, such as document.write. Newer browsers will continue to scan or parse the document in the background and trigger downloads for external content it may need (js, images, css etc), but rendering is still blocked.
In sostanza l'inclusione degli script è bloccante per il rendering della pagina sia per via del caricamento che per via dell'esecuzione (anche il file di jquery deve essere eseguito, sebbene si tratti solo di dichiarazioni credo), ed il fatto che l'esecuzione non può essere parallela aumenta il tempo impiegato. Inoltre non lo sapevo (ma in effetti ha senso), ma nell'articolo dice che lo script attende anche il caricamento e l'esecuzione dei css.
Insomma, quando si includono molti file può essere una buona idea valutare queste ottimizzazioni.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2013, 16:11   #8
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Piccola premessa: ritengo che oggigiorno, l'utilizzo di un framework js sia indispensabile. Credo che solo un pazzo voglia far uso del JS puro, o in casi applicativi MOLTO particolari.
Dunque, do per scontato che si utilizzi un framework come jQuery o altro, per lo scripting.

Perciò, se ho ben capito, qui si sta parlando di scaricare in locale lo script, che è ciò che blocca il browser?
Perchè se si trattasse di uno script in jQuery, quasi sempre ( assolutamente sempre?? ) c'è un document.ready a fermare l'esecuzione, quindi, in questo caso, il problema di fondo si riduce ad un semplice download dello script...

Come dice wingman87, anche il framework jquery deve essere scaricato ma, come si legge nell'articolo, i nuovi browser eseguono download in parallelo degli elementi necessari. Quindi forse c'è un piccolo rallentamento di qualche frazione di secondo per il download della libreria e dello script. Problema assolutamente minimizzabile se si spostasse lo script in fondo al body ( rimuovendo il document.ready che risulta inutile ) e si lasciasse solo jQuery nell'header.

Tirando le somme, secondo me è una preoccupazione inutile questa, perchè se i nuovi browser scaricando in parallelo, scaricare la sola libreria jquery in un processo a parte non penso influenzi affatto il caricamento della pagina ( presupponendo di caricare gli altri script a fondo pagina.. ).
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2013, 17:51   #9
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Per rendere asincrono il caricamento degli script, HTML5 prevede degli appositi attributi:

Quote:
Originariamente inviato da https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
async [HTML5]

Set this Boolean attribute to indicate that the browser should, if possible, execute the script asynchronously. It has no effect on inline scripts (i.e., scripts that don't have the src attribute). In older browsers that don't support the async attribute, parser-inserted scripts block the parser; script-inserted scripts execute asynchronously in IE and WebKit, but synchronously in Opera and pre-4.0 Firefox. In Firefox 4.0, the async DOM property defaults to true for script-created scripts, so the default behavior matches the behavior of IE and WebKit. To request script-inserted external scripts be executed in the insertion order in browsers where the document.createElement("script").async evaluates to true (such as Firefox 4.0), set .async=false on the scripts you want to maintain order. Never call document.write() from an async script. In Gecko 1.9.2, calling document.write() has an unpredictable effect. In Gecko 2.0, calling document.write() from an async script has no effect (other than printing a warning to the error console).
Per il resto, è sufficiente porre gli script in coda al body, oppure registrare un handler per gli eventi di caricamento ("load", ma soprattutto "DOMContentLoaded").
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2013, 18:46   #10
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Per rendere asincrono il caricamento degli script, HTML5 prevede degli appositi attributi:



Per il resto, è sufficiente porre gli script in coda al body, oppure registrare un handler per gli eventi di caricamento ("load", ma soprattutto "DOMContentLoaded").
Come dice l'articolo riguardo a questa opzione:
Quote:
Unfortunately, because they’re going to execute as soon as possible, “2.js” may execute before “1.js”. This is fine if they’re independent, perhaps “1.js” is a tracking script which has nothing to do with “2.js”. But if your “1.js” is a CDN copy of jQuery that “2.js” depends on, your page is going to get coated in errors, like a cluster-bomb in a… I dunno… I’ve got nothing for this one.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2013, 18:55   #11
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Ovviamente ciò vale solo se dell'ordine di esecuzione non te ne può fregare di meno. In caso contrario, metti i tag script in fondo al body (senza attributo async) nell'ordine da te desiderato, et voila.

EDIT: e nessuno toglie che tu possa voler usare un misto delle due tecniche.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2013, 16:52   #12
__ZERO_UNO__
Member
 
L'Avatar di __ZERO_UNO__
 
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
Ricordo di aver letto una discussione su google group di ingegneri di Google proprio su questo. Loro usano anche mettere gli script subito dopo la fine dell'ultimo elemento del DOM sul quale tale script opera, per migliorare la UX (user experience). Infatti se –come usualmente accade– l'utente è impaziente di "fare", cioè non vuole attendere il completamento del caricamento, le parti della pagina caricate sono già completamente attive.

Questa soluzione può essere una buona soluzione con pagine molto complesse, altamente interattive. Altrimenti si può anche evitare a favore di una maggiore semplicità di manutenzione, a mio parere.
__________________

AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB
Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX
Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200
__ZERO_UNO__ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Tesla lancia la Model Y Standard Long Ra...
NVIDIA H200: possibili vendite in Cina g...
Amazon taglia i prezzi dell'hardware PC:...
Samsung non vuole alzare i prezzi, ma gl...
Il futuro dei Chromebook tra supporto so...
HONOR Magic 8 Pro Air in mostra nelle pr...
Tineco presenta il concetto di Modern Li...
Cuffie di alto livello con cancellazione...
Spunta uno sconto di ben 76€ su Amazon K...
Cuffie gaming di marca a meno di 30€: qu...
Samsung: un trimestre da record grazie a...
Fallout 4: crescita record dei giocatori...
Alphabet ha superato Apple per capitaliz...
Xiaomi Redmi Note 14 5G 8GB/256GB a 199€...
ECOVACS DEEBOT T50 PRO OMNI Gen2 a 449€ ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:55.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v