Saltar al contenido

¿Cuáles son las alternativas a document.write?

Esta es el arreglo más válida que encomtrarás dar, pero estúdiala pausadamente y analiza si se puede adaptar a tu trabajo.

Solución:

La razón por la que se reemplaza su HTML es debido a una función malvada de JavaScript: document.write().

Definitivamente es “mala forma”. Solo funciona con páginas web si lo usa en la carga de la página; y si lo usa durante el tiempo de ejecución, reemplazará todo su documento con la entrada. Y si lo está aplicando como una estructura XHTML estricta, ni siquiera es un código válido.


el problema:

document.write escribe en el flujo de documentos. Vocación document.write en un documento cerrado (o cargado) llama automáticamente document.open que borrará el documento.

— cita de la MDN

document.write() tiene dos secuaces, document.open()y document.close(). Cuando el documento HTML se está cargando, el documento está “abierto”. Cuando el documento ha terminado de cargarse, el documento se ha “cerrado”. Utilizando document.write() en este punto, borrará todo el documento HTML (cerrado) y lo reemplazará con un nuevo documento (abierto). Esto significa que su página web se borró sola y comenzó a escribir una nueva página, desde cero.

Yo creo document.write() hace que el navegador también tenga una disminución del rendimiento (corríjame si me equivoco).


un ejemplo:

Este ejemplo escribe la salida en el documento HTML después la página ha cargado. Reloj document.write()Los poderes malignos de borran todo el documento cuando presionas el botón “exterminar”:

I am an ordinary HTML page.  I am innocent, and purely for informational purposes. Please do not 
me!


las alternativas:

  • .innerHTML Esta es una maravillosa alternativa, pero esta attribute tiene que estar adjunto al elemento donde se quiere poner el texto.

Ejemplo: document.getElementById('output1').innerHTML = 'Some text!';

  • .createTextNode() es la alternativa recomendada por el W3C.

Ejemplo: var para = document.createElement('p');
para.appendChild(document.createTextNode('Hello, '));

NOTA: Se sabe que esto tiene algunas disminuciones de rendimiento (más lento que .innerHTML). recomiendo usar .innerHTML en cambio.


el ejemplo con el .innerHTML alternativa:

I am an ordinary HTML page. 
I am innocent, and purely for informational purposes. 
Please do not 

 me!

Aquí hay un código que debería reemplazar a document.write en el lugar:

document.write=function(s)
    var scripts = document.getElementsByTagName('script');
    var lastScript = scripts[scripts.length-1];
    lastScript.insertAdjacentHTML("beforebegin", s);

Como alternativa recomendada a document.write podría usar la manipulación de DOM para consultar directamente y agregar elementos de nodo al DOM.

Comentarios y calificaciones de la guía

Puedes proteger nuestro análisis dejando un comentario y valorándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *