2010-07-23 7 views

Respuesta

15

document.write() en sí no parece ser muy perjudicial para el rendimiento de la página en la mayoría de los navegadores. De hecho, ejecuté algunas pruebas en DHTML Kitchen y encontré que en Firefox, Opera y Chrome, document.write() era más rápido en la primera carga y comparable en velocidad de HTML estándar en renovaciones posteriores. Internet Explorer 8 fue la excepción, pero en realidad fue más rápido que los otros navegadores al procesar el HTML (sorprendentemente).

Como Guffa's answer señala, y lo que estaba haciendo, los problemas de rendimiento reales provienen de los propios scripts en línea. La representación de contenido solo puede continuar cuando un script en línea ha terminado de ejecutarse, de modo que si tiene una rutina compleja dentro de un script en línea, puede detener notablemente la carga de su página para el usuario final. Es por eso que se espera onload/DOMReady y se prefiere el uso de DOM.

Es especialmente imprudente utilizar document.write() después de que el documento haya terminado de cargarse. En la mayoría de los navegadores, usar document.write() después de cargar el documento también implica document.open(), que borrará el HTML actual de la pantalla y creará un nuevo documento.

Eso no significa que document.write() no tiene sus aplicaciones, es solo que la mayoría de los desarrolladores lo usan por las razones equivocadas. problemas reales con document.write() incluyen:

  • No se puede utilizar en los documentos sirven como XHTML (para los navegadores que analizar correctamente XHTML como XHTML).
  • Sobrescribe toda la página cuando se utiliza después de que el análisis DOM haya finalizado.
  • Agrega contenido a la página a la que los navegadores no pueden acceder con JavaScript deshabilitado (aunque <noscript> a veces es una solución válida aquí).
  • Más difícil de mantener que el HTML estático.
6

Si tiene scripts que se ejecutan en el medio de la página, el navegador tiene que esperar a que la secuencia de comandos finalice antes de poder continuar el análisis del resto de la página.

Para hacer que su página aparezca rápidamente, desea que el navegador analice la página lo antes posible para que se pueda mostrar al usuario, y luego puede aplicar la funcionalidad adicional que agregan sus secuencias de comandos.

+2

Debo añadir que cada vez que se inserta un HTML nuevo a través de document.write() se vuelve a analizar toda la página, y toda la cascada de CSS y todo lo demás. – Robusto

+1

Esto cuenta para cualquier script, no solo 'document.write'. –

+2

@Robusto: Hm ... Toda la página no se puede analizar nuevamente. Como 'document.write' se usa mientras se analiza la página, el análisis aún no está completo ... – Guffa

0

Creo que hay alguna razón por la que se debe evitar.

pero lo que quiere decir es, que si tiene algún lugar en el código HTML de una

<script> 
document.write('mystuff') 
</script 

uno de los problemas es que bevore el navegador puede mostrar su sitio web, se tiene que cargar el Javascript Interprete. si desea iniciar su javascript solamente por body.onload entonces se puede mostrar toda la página web para el usuario, y ejecute el javascript, por lo tanto ...

el tiempo de carga subjetiva es más rápido :-)

Cuestiones relacionadas