Questo è generalmente il modo in cui gestisco il miglioramento progressivo pur mantenendo l'esperienza pulita, ma quanto è sicuro? c'è il potenziale per una condizione di gara e questo non funziona?È corretto manipolare dom prima dello stato di pronto?
immaginare il semplice scenario astratto, si desidera visualizzare qualcosa in modo diverso se si dispone di supporto javascript .. questo è generalmente ciò che io voglio finire per fare:
<div id="test">original</div>
<script type="text/javascript">
var t = document.getElementById('test');
t.innerHTML = 'changed';
</script>
Molti possono rivendicare è necessario utilizzare un quadro e attendere per un evento domready, e fare le modifiche lì .. tuttavia c'è un ritardo significativo in cui l'elemento 'test' sarà già stato reso prima della fine del documento e il css è pronto e un domready si innesca .. causando così uno sfarfallio notabile di "originale".
Questo codice è soggetto a guasti delle condizioni di gara? o posso garantire che un elemento sia individuabile e modificabile se esiste prima della sceneggiatura?
Grazie in anticipo.
Ciao Raegx, sì, posso capire completamente l'operazione problema interrotto con elementi che cambiano che non sono stati chiusi .. in termini di viscosità, queste pagine sono chiare, la pagina effettiva è 15kb .. tuttavia il mio elemento modificato potrebbe essere proprio sotto il tag del corpo di apertura, e renderà il rendering prima che domready fires, indipendentemente da quanto sia leggera la mia pagina .. Sto cercando di evitare un'esperienza sciatta questo è sempre vissuto con domino e facendo questo genere di cose. – meandmycode
Indietro nei periodi bui, quando non avevamo un modo cross-browser per sparare suDomReady, usavamo onLoad, che sparava dopo che tutte le immagini/css/etc erano state caricate e renderizzate. Ora abbiamo onDomReady che si attiva dopo che il DOM è stato analizzato e rappresentato, ma potenzialmente prima di immagini/etc. Anche questo è un progresso relativamente nuovo. Quindi aspettare OnDomReady è tutto ciò che abbiamo a questo punto e rappresenta la migliore soluzione per la robustezza. Se ritieni che la tua manipolazione prima di onDomReady valga la pena e tu non stia aggiungendo/creando/spostando nodi su nodi non chiusi, probabilmente stai bene. –
Grande, ne vale sicuramente la pena se funziona .. da quello che sto ascoltando, dovrebbe funzionare bene ma non c'è nulla che affermi ufficialmente che un elemento dovrebbe essere pronto dopo il suo nodo di chiusura. – meandmycode