no veo el problema con document.write
. Si lo está utilizando antes de que el evento onload
se dispare, como probablemente sea, para compilar elementos a partir de datos estructurados, por ejemplo, es la herramienta adecuada para usar. No existe una ventaja de rendimiento al usar insertAdjacentHTML
o agregar nodos explícitamente al DOM después de que se haya creado. Acabo de probarlo de tres maneras diferentes con un script antiguo que solía programar llamadas de módem entrantes para un servicio 24/7 en un banco de 4 módems.
Cuando termina, este script crea más de 3000 nodos DOM, principalmente celdas de tabla. En una PC de 7 años que ejecuta Firefox en Vista, este pequeño ejercicio lleva menos de 2 segundos usando document.write
desde un archivo fuente local de 12kb y tres GIF de 1px que se reutilizan unas 2000 veces. La página simplemente aparece en forma completa, lista para manejar eventos.
Usando insertAdjacentHTML
no es un sustituto directo como el navegador se cierra etiquetas, que el guión requiere permanecer abierto, y toma el doble de tiempo para crear una página en última instancia destrozado. Escribir todas las piezas en una cadena y luego pasarlo a insertAdjacentHTML
lleva más tiempo, pero al menos se obtiene la página tal como se diseñó. Otras opciones (como reconstruir manualmente el nodo DOM a la vez) son tan ridículas que ni siquiera voy a ir allí.
A veces, document.write
es lo que se debe usar. El hecho de que sea uno de los métodos más antiguos en JavaScript no es un punto en su contra, sino un punto a su favor: es un código altamente optimizado que hace exactamente lo que se pretendía hacer y que ha estado haciendo desde su inicio.
Es bueno saber que hay métodos alternativos posteriores a la carga disponibles, pero debe entenderse que están destinados a un fin diferente; es decir, modificar el DOM después de haber sido creado y la memoria asignada a él. Usar estos métodos de forma intrínseca requiere más recursos si su script está destinado a escribir el código HTML desde el cual el navegador crea el DOM en primer lugar.
Simplemente escríbalo y deja que el navegador y el intérprete hagan el trabajo. Para eso están allí.
PS: Acabo de prueba usando un PARAM onload
en la etiqueta body
e incluso en este punto el documento no está aún open
y document.write()
funciones como se pretende. Además, no hay una diferencia de rendimiento perceptible entre los diversos métodos en la última versión de Firefox. Por supuesto, hay un montón de almacenamiento en caché probablemente en algún lugar de la pila de hardware/software, pero ese es realmente el punto: deje que la máquina haga el trabajo. Sin embargo, puede hacer la diferencia en un teléfono inteligente barato. ¡Aclamaciones!
'impresión()' 'resuelve a window.print()'. – alex
posible duplicado de [Reemplazar document.write() s en una página xhtml + xml] (http://stackoverflow.com/questions/3614288/replacing-document-writes-in-an-xhtmlxml-page) – alk
JavaScript 's imprimir() 'no es lo mismo que' print() 'de PHP. JS literalmente envía la página a la impresora, y PHP simplemente emite código. –