Por lo general, administro la mejora progresiva mientras mantengo la experiencia limpia, pero ¿qué tan seguro es? ¿hay potencial para una condición de carrera y esto no funciona?¿Está bien manipular dom antes del estado preparado?
imaginar el escenario simple resumen, que desea mostrar algo diferente si tiene Javascript apoyo .. esto es generalmente lo que voy a terminar haciendo:
<div id="test">original</div>
<script type="text/javascript">
var t = document.getElementById('test');
t.innerHTML = 'changed';
</script>
Muchos pueden reclamar que debe utilizar un marco y esperar para un evento domready, y hacer cambios allí ... sin embargo, hay un retraso significativo donde el elemento 'prueba' ya habrá sido renderizado antes del final del documento y el CSS está listo y se dispara un prearranque .. causando así un parpadeo notorio de 'original'.
¿Este código es susceptible de fallas de condición de carrera? o ¿puedo garantizar que un elemento sea detectable y modificable si existe antes del script?
Gracias de antemano.
Hola Raegx, sí, puedo entender completamente el problema de operación abortada con elementos cambiantes que no se han cerrado ... en términos de la ligereza, estas páginas son livianas, la página real es de 15kb ... sin embargo, mi elemento cambiado bien puede estar justo debajo de la etiqueta del cuerpo de apertura, y se renderizará antes de los fuegos dominantes, independientemente de cuán liviana sea mi página. Estoy tratando de evitar una experiencia descuidada eso siempre se experimenta imo con domready y haciendo este tipo de cosas. – meandmycode
Ya en la edad de las tinieblas, cuando no teníamos una forma de navegador cruzado para disparar aDomReady solíamos usar onLoad, que se disparaba después de cargar y renderizar todas las imágenes/css/etc. Ahora tenemos onDomReady que se activa después de que el DOM ha sido analizado y representado, pero potencialmente antes de las imágenes/etc. Este es un avance relativamente nuevo también. Así que esperar a OnDomReady es todo lo que tenemos en este momento y es la mejor solución para la robustez. Si crees que tu manipulación antes de onDomReady vale la pena y no estás agregando/creando/moviendo nodos a nodos no abiertos, probablemente estés bien. –
Genial, vale la pena si funciona ... por lo que estoy escuchando, debería funcionar bien, pero no hay nada que indique oficialmente que un elemento debe estar listo después de su nodo de cierre. – meandmycode