El problema
El uso de guiones o programas en una página web puede servir para construir partes de la página o incluso toda ella: desde la etiqueta <html> hasta la etiqueta </html>. Esto puede ser útil cuando el contenido de una página no es fijo sino que depende de unas condiciones concretas. Por ejemplo en una página dedicada a fotografías podemos dar al usuario la opción de elegir la imagen que quiera ver y luego construir una nueva ventana con esa imagen y los datos relativos a ella.

La solución
La forma para lograr una página total o parcialmente construida es el método write del objeto document. Este método nos permite incluir una cadena de texto en la página web mientras se está descargando en el ordenador del visitante. Esta cadena de texto puede contener todas las etiquetas propias del HTML, tan sólo es necesario cuidar el asunto de las comillas, para asegurarnos de que éstas no causan errores lo más seguro es precederlas del carácter \ (barra invertida). Y si dentro de la cadena se incluye código script procurar que el texto </script> no aparezca todo seguido para evitar que el explorador interprete como fin de script. El método document.write puede actuar sobre la ventana en la que se encuentra el script o bien sobre una ventana creada con window.open, en este caso en lugar de document.write debemos escribir ventana.document.write(), donde ventana es el objeto window devuelto por el método window.open()

Un caso práctico

En este ejemplo se va a usar el método document.write para generar una página completa que incluye un script. La página obtenida contiene una imagen y un enlace con un rollover:

function rellenaPagina()
{
document.write
('<html><head>');
document.write('<title>Página autoconstruida</title>');
document.write('<script language="Javascript">')
document.write('function cambia(obj, c){obj.style.color = c}');
document.write('</s'+'cript></head>')
document.write('<body bgcolor="#FFFFFF" text="#000000">'+
'<img src="../euro.gif" width="40" height="40">'+
'<a href="../acceso.htm" onmouseover="cambia(this, \'red\')"+
'mouseout="cambia(this, \'blue\')">Más'+
'información >>></a>')
document.write('</body></html>')
}

Como ves cuando aparecen comillas anidadas se usa el carácter \ (barra invertida) para evitar que Javascript alcance el fin de la cadena antes de tiempo. Observa también como la etiqueta </script> aparece rota evitando que el explorador la lea como si fuera el fin del script. Para poner en funcionamiento esta función basta con colocar un script que la llame en el cuerpo de la página:

<body>
<script language="Javascript">
rellenaPágina()
</script>