Programación de aplicaciones web: historia, principios básicos y clientes web Sergio Luján Mora Título: Programación de aplicaciones web: historia, principios básicos y clientes web. Autor: © Sergio Luján Mora I.S.B.N.: 84-8454-206-8 Depósito legal: A-883-2002 Edita: Editorial Club Universitario Telf.: 96 567 38 45 C/. Cottolengo, 25 - San Vicente (Alicante) www.ecu.fm ecu@ecu.fm Printed in Spain Imprime: Imprenta Gamma Telf.: 965 67 19 87 C/. Cottolengo, 25 - San Vicente (Alicante) www.gamma.fm gamma@gamma.fm Reservados todos los derechos. Ni la totalidad ni parte de este libro puede reproducirse o transmitirse por ningún procedimiento electrónico o mecánico, incluyendo fotocopia, grabación magnética o cualquier almacenamiento de información o sistema de reproducción, sin permiso previo y por escrito de los titulares del Copyright. Prefacio Internet y la Web han inuido enormemente tanto en el mundo de la informática como en la sociedad en general. Si nos centramos en la Web, en poco menos de 10 años ha transformado los sistemas informáticos: ha roto las barreras físicas (debido a la distancia), económicas y lógicas (debido al empleo de distintos sistemas operativos, protocolos, etc.) y ha abierto todo un abanico de nuevas posibilidades. Una de las áreas que más expansión está teniendo en la Web en los últimos años son las aplicaciones web. Las aplicaciones web permiten la generación automática de contenido, la creación de páginas personalizadas según el perl del usuario o el desarrollo del comercio electrónico. Además, una aplicación web permite interactuar con los sistemas informáticos de gestión de una empresa, como puede ser gestión de clientes, contabilidad o inventario, a través de una página web. Las aplicaciones web se encuadran dentro de las arquitecturas cliente/servidor: un ordenador solicita servicios (el cliente) y otro está a la espera de recibir solicitudes y las responde (el servidor). En este libro se aborda la programación de la parte cliente de las aplicaciones web. Existen multitud de tecnologías que se pueden emplear para programar las aplicaciones web, como ActiveX o applets, pero no están tan estandarizadas como las dos que se muestran en este libro: HTML y JavaScript. Este libro se complementa con otro de próxima aparición que tratará la programación de aplicaciones web desde el punto de vista del servidor. En él se mostrarán las tecnologías que se emplean para programar los servidores web: CGI, ASP, JSP, PHP, etc. Este libro posee diez capítulos y tres apéndices que denen tres partes. La primera parte, formada por los cinco primeros capítulos, aborda una serie de temas teóricos como son la historia de Internet y la Web, las arquitecturas cliente/servidor en general, las aplicaciones web como caso particular de las arquitecturas cliente/servidor y la estructura (física y lógica) de un sitio web. En la segunda parte, formada por los cinco últimos capítulos, se tratan una serie de temas más prácticos: el lenguaje HTML, una guía de estilo con consejos que ayudan a evitar los errores más comunes a la hora de crear páginas web, los lenguajes de script en general y un lenguaje de script iii concreto: JavaScript. Esta segunda parte v i Prefacio naliza con el modelo de objetos de documento, que permite acceder a los elementos de una página web desde un lenguaje de script. La última parte del libro está formada por tres apéndices donde se resumen las etiquetas de HTML y se explica cómo trabajar con los colores en HTML y cómo depurar errores de JavaScript. El libro además posee una serie de índices (general, de guras, de acrónimos, etc.) que facilitan la lectura y la búsqueda de información. Para nalizar, quisiera mandar un abrazo a mi familia y a Marisa, la gente que quiero y que me apoya en mi trabajo. También me gustaría agradecer a mi compañero Jaume Aragonés del Departamento de Lenguajes y Sistemas Informáticos de la Universidad de Alicante la labor que ha realizado de revisión de este libro y sus valiosos comentarios que me han permitido mejorar algunos aspectos confusos. Alicante, 31 de octubre de 2002 Sergio Luján Mora Índice resumido Prefacio Índice resumido Índice general Índice de cuadros Índice de guras Índice de acrónimos 1. Introducción 2. Historia de Internet 3. Arquitecturas cliente/servidor 4. Qué es una aplicación web 5. Estructura de un sitio web 6. HTML 7. Guía de estilo 8. Lenguajes de script 9. JavaScript 10.Modelo de Objetos de Documento A. Resumen de etiquetas de HTML v iii v vii xiii xv xxi 1 5 39 47 61 91 167 175 181 239 271 vi B. Colores en HTML C. Depuración de errores de JavaScript Bibliografía recomendada Índice alfabético Índice resumido 289 299 313 315 Índice general Prefacio iii Índice resumido v Índice general vii Índice de cuadros xiii Índice de guras xv Índice de acrónimos xxi 1. Introducción 1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Contenido de los capítulos . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Convenciones tipográcas . . . . . . . . . . . . . . . . . . . . . . . . . 2. Historia de Internet 2.1. Historia de Internet . . . . . . 2.1.1. Hitos en la diseminación 2.1.2. El primer Internet . . 2.1.3. Protocolos de Internet . 2.2. Historia de la Web . . . . . . . 2.2.1. El primer navegador . . 2.3. Generaciones de los sitios web . 2.3.1. Primera generación . . . 2.3.2. Segunda generación . . 2.3.3. Tercera generación . . . 2.3.4. Cuarta generación . . . . . . de la . . . . . . . . . . . . . . . . . . . . . . . . . . . vii . . . . . . . . información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 5 5 6 7 14 15 22 25 25 28 29 34 viii Índice general 3. Arquitecturas cliente/servidor 3.1. 39 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Separación de funciones 3.3. Modelos de distribución en aplicaciones cliente/servidor . . . . . . . . . . . . . . . . . . . . . . . . . . 39 40 . . . . . . . . 42 Presentación distribuida . . . . . . . . . . . . . . . . . . . . . . 42 3.3.2. Aplicación distribuida . . . . . . . . . . . . . . . . . . . . . . . 43 3.3.3. Datos distribuidos 43 3.3.1. . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Arquitecturas de dos y tres niveles . . . . . . . . . . . . . . . . . . . . 44 3.5. Descripción de un sistema cliente/servidor . . . . . . . . . . . . . . . . 44 4. Qué es una aplicación web 4.1. 47 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.1. El cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.1.2. El servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2. Transferencia de páginas web . . . . . . . . . . . . . . . . . . . . . . . 51 4.3. Entornos web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3.1. Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3.2. Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.3.3. Extranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4. Ventajas y desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.5. Arquitecturas de las aplicaciones web . . . . . . . . . . . . . . . . . . . 54 4.6. Metodología de desarrollo de sitios web 59 . . . . . . . . . . . . . . . . . 5. Estructura de un sitio web 61 5.1. Qué es un sitio web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2. Contenido de un sitio web . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.3. Estructura física 64 5.4. 5.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1. Nombres de los directorios y de los cheros 5.3.2. Enlaces . . . . . . . . . . . 62 66 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Estructura lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.4.1. Estructura secuencial . . . . . . . . . . . . . . . . . . . . . . . 71 5.4.2. Estructura en rejilla . . . . . . . . . . . . . . . . . . . . . . . . 72 5.4.3. Estructura en árbol . . . . . . . . . . . . . . . . . . . . . . . . 76 5.4.4. Estructura en red . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.4.5. Estructura mixta . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.4.6. Comparativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.4.7. Cómo no perderse en la estructura . . . . . . . . . . . . . . . . 82 Guía de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 x Índice general i 6. HTML 91 6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.2. Evolución de HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.3. Clasicación de las páginas 94 6.4. Qué necesito para usar HTML 6.5. Conceptos básicos de HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 . . . . . . . . . . . . . . . . . . . . . . . 97 6.5.1. Estructura de una página . . . . . . . . . . . . . . . . . . . . . 98 6.5.2. Caracteres especiales y secuencias de escape . . . . . . . . . . . 100 6.6. Metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.7. Etiquetas HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 6.8. Formato del texto 105 6.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8.1. Encabezados de secciones . . . . . . . . . . . . . . . . . . . . . 105 6.8.2. Formatos de caracteres . . . . . . . . . . . . . . . . . . . . . . . 106 6.8.3. La etiqueta <FONT> . . . . . . . . . . . . . . . . . . . . . . . 108 6.8.4. Alineamiento del texto . . . . . . . . . . . . . . . . . . . . . . . 111 6.8.5. Líneas horizontales . . . . . . . . . . . . . . . . . . . . . . . . . 114 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.9.1. Listas de denición . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.9.2. Listas ordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . 118 6.9.3. Listas no ordenadas . . . . . . . . . . . . . . . . . . . . . . . . 119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.10. Colores 6.10.1. Color de fondo de una página . . . . . . . . . . . . . . . . . . . 121 6.10.2. Color del texto . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.11. Enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.11.1. Enlace a un punto del mismo documento 6.11.2. Enlace a otro documento 122 . . . . . . . . . . . . 122 . . . . . . . . . . . . . . . . . . . . . 123 6.11.3. Enlace a un punto de otro documento . . . . . . . . . . . . . . 125 . . . . . . . . . . . . . . . . . . 127 6.12. Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.12.1. Fusión de las y columnas . . . . . . . . . . . . . . . . . . . . . 132 6.12.2. Tablas invisibles 134 6.11.4. Envío de un correo electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . 6.12.3. Alineamiento del contenido de una tabla . . . . . . . . . . . . . 134 6.12.4. Distancia entre celdas . . . . . . . . . . . . . . . . . . . . . . . 136 6.12.5. Tablas como marcos . . . . . . . . . . . . . . . . . . . . . . . . 138 6.13. Imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.13.1. Archivos GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.13.2. Archivos JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6.13.3. Archivos PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.13.4. Etiqueta <IMG> . . . . . . . . . . . . . . . . . . . . . . . . . . 147 6.13.5. Imágenes como fondo de una página . . . . . . . . . . . . . . . 150 6.14. Formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.14.1. Controles de un formulario . . . . . . . . . . . . . . . . . . . . 151 x Índice general 6.14.2. Campos de vericación . . . . . . . . . . . . . . . . . . . . . . . 153 6.14.3. Campos excluyentes 153 . . . . . . . . . . . . . . . . . . . . . . . . 6.14.4. Campos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . 155 6.14.5. Listas de selección . . . . . . . . . . . . . . . . . . . . . . . . . 155 . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.14.6. Áreas de texto 6.14.7. Alineamiento de formularios . . . . . . . . . . . . . . . . . . . . 157 6.15. Marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.15.1. Nombres de destinos especiales . . . . . . . . . . . . . . . . . . 163 6.15.2. Como evitar que cambie la dirección en el navegador al pulsar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.15.3. El atributo TARGET en un formulario . . . . . . . . . . . . . . un enlace 165 7. Guía de estilo 7.1. 167 Guía de estilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 7.1.1. Organizar el código HTML 168 7.1.2. Cuidado con los colores . . . . . . . . . . . . . . . . . . . . . . 168 7.1.3. Cuidado con los colores por defecto . . . . . . . . . . . . . . . . 168 7.1.4. Cuidado con los tipos de letra . . . . . . . . . . . . . . . . . . . 169 7.1.5. Cuidado con los valores absolutos . . . . . . . . . . . . . . . . . 169 7.1.6. Cuidado con las barras de desplazamiento . . . . . . . . . . . . 169 7.1.7. Cuidado con las imágenes de fondo . . . . . . . . . . . . . . . . 170 7.1.8. Sacar partido al hipertexto 7.1.9. Usar las capacidades multimedia 7.1.10. Identidad corporativa 7.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 170 . . . . . . . . . . . . . . . . . . . . . . . 171 7.1.11. Permitir que los usuarios se comuniquen . . . . . . . . . . . . . 171 7.1.12. Facilitar las búsquedas . . . . . . . . . . . . . . . . . . . . . . . 171 7.1.13. Revisar las páginas periódicamente . . . . . . . . . . . . . . . . 171 7.1.14. Los enlaces 171 Accesibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 7.2.1. Accesibilidad de cara al usuario . . . . . . . . . . . . . . . . . . 173 7.2.2. Accesibilidad de cara al navegador . . . . . . . . . . . . . . . . 174 8. Lenguajes de script 175 8.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 8.2. Diferencias entre VBScript y JavaScript . . . . . . . . . . . . . . . . . 176 8.3. Para qué sirven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 8.4. Como se usa un lenguaje de script en un navegador . . . . . . . . . . . 177 9. JavaScript 9.1. 181 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 9.1.1. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 9.1.2. Qué necesito para programar en JavaScript . . . . . . . . . . . 184 9.1.3. JavaScript y Java . . . . . . . . . . . . . . . . . . . . . . . . . . 184 xi Índice general 9.2. 9.3. 9.4. 9.5. 9.1.4. Versiones 9.1.5. JavaScript y ECMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1.6. JScript 9.1.7. Diferencias entre JavaScript y JScript 184 . . . . . . . . . . . . . . . . . . . . . . . . 187 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 . . . . . . . . . . . . . . 187 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 9.2.1. Características básicas . . . . . . . . . . . . . . . . . . . . . . . 189 9.2.2. Comentarios 191 9.2.3. Declaración de variables . . . . . . . . . . . . . . . . . . . . . . 191 9.2.4. Ámbito de las variables . . . . . . . . . . . . . . . . . . . . . . 193 9.2.5. Caracteres especiales . . . . . . . . . . . . . . . . . . . . . . . . 194 9.2.6. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 9.2.7. Palabras reservadas 197 El lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sentencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 9.3.1. Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 9.3.2. De repetición . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 9.3.3. De manipulación de objetos . . . . . . . . . . . . . . . . . . . . 205 Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 9.4.1. Denición de una función . . . . . . . . . . . . . . . . . . . . . 208 9.4.2. Funciones predenidas . . . . . . . . . . . . . . . . . . . . . . . 209 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creación de objetos 9.5.2. Métodos de un objeto . . . . . . . . . . . . . . . . . . . . . . . 215 9.5.3. Eliminación de objetos . . . . . . . . . . . . . . . . . . . . . . . 216 9.6. Tratamiento de cadenas 9.7. 9.8. . . . . . . . . . . . . . . . . . . . . . . . . 213 9.5.1. 213 . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Operaciones matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . 222 Validación de formularios . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.8.1. Validación campo nulo . . . . . . . . . . . . . . . . . . . . . . . 226 9.8.2. Validación alfabética . . . . . . . . . . . . . . . . . . . . . . . . 228 9.8.3. Validación numérica . . . . . . . . . . . . . . . . . . . . . . . . 231 9.8.4. Validación de una fecha 235 . . . . . . . . . . . . . . . . . . . . . . 10.Modelo de Objetos de Documento 239 10.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 10.2. Modelo de objetos en Netscape Communicator . . . . . . . . . . . . . 240 10.2.1. Objeto document . . . . . . . . . . . . . . . . . . . . . . . . . . 242 10.2.2. Cómo acceder a los controles de un formulario 10.2.3. Objeto history . . . . . . . . . 248 . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.2.4. Objeto location . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.2.5. Objeto navigator . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.2.6. Objeto screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 10.2.7. Objeto window . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.3. Modelo de objetos en Microsoft Internet Explorer . . . . . . . . . . . . 270 xii Índice general A. Resumen de etiquetas de HTML A.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2. Etiquetas que denen la estructura del documento 271 272 . . . . . . . . . . . 273 A.3. Etiquetas que pueden ir en la cabecera . . . . . . . . . . . . . . . . . . 273 A.4. Etiquetas que denen bloques de texto . . . . . . . . . . . . . . . . . . 274 A.5. Etiquetas de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 A.6. Etiquetas de características del texto . . . . . . . . . . . . . . . . . . . 275 A.7. Etiquetas de anclas y enlaces . . . . . . . . . . . . . . . . . . . . . . . 276 A.8. Etiquetas de imágenes y mapas de imágenes . . . . . . . . . . . . . . . 277 A.9. Etiquetas de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 A.10.Etiquetas de formularios . . . . . . . . . . . . . . . . . . . . . . . . . . 279 A.11.Etiquetas de marcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 A.12.Etiquetas de situación de contenidos . . . . . . . . . . . . . . . . . . . 283 A.13.Etiquetas de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 A.14.Etiquetas de applets y plug-ins . . . . . . . . . . . . . . . . . . . . . . 285 . . . . . . . . . . . . . . . . . . . . . . . 286 A.16.Atributos universales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 A.15.Etiquetas de ajuste del texto B. Colores en HTML B.1. Cómo trabajar con las componentes RGB . . . . . . . . . . . . . . . . 289 289 B.1.1. Obtener las componentes del color deseado en decimal . . . . . 290 B.1.2. Transformar las componentes de decimal a hexadecimal . . . . 290 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 B.4. Consejos sobre el uso de colores . . . . . . . . . . . . . . . . . . . . . . 296 B.2. Tabla de colores B.3. Cambio de colores C. Depuración de errores de JavaScript C.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 299 C.2. Depuración en cualquier navegador . . . . . . . . . . . . . . . . . . . . 300 C.3. Netscape Communicator . . . . . . . . . . . . . . . . . . . . . . . . . . 300 C.3.1. Modicar las preferencias . . . . . . . . . . . . . . . . . . . . . 302 C.3.2. Evaluación de expresiones con la consola . . . . . . . . . . . . . 304 C.3.3. Netscape JavaScript Debugger C.4. Microsoft Internet Explorer Bibliografía recomendada Índice alfabético . . . . . . . . . . . . . . . . . . 305 . . . . . . . . . . . . . . . . . . . . . . . . 308 313 315 Índice de cuadros 2.1. Protocolos más comunes de Internet . . . . . . . . . . . . . . . . . . . 6.1. 6.2. 6.3. 6.4. Versiones de HTML . . . . . . . . . . . Caracteres con un signicado especial en Caracteres especiales . . . . . . . . . . . Diferencias entre GIF, JPEG y PNG . . . . . . . HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1. 9.2. 9.3. 9.4. 9.5. 9.6. 9.7. 9.8. JavaScript frente a Java . . . . . . . . . . . . . . . . . . . . . . . . . Relación entre las versiones de JavaScript y de Netscape Navigator . Relación entre las versiones de JavaScript y de ECMA . . . . . . . . Relación entre las versiones de JScript y los productos de Microsoft . Caracteres especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . Precedencia de los operadores de JavaScript . . . . . . . . . . . . . . Palabras reservadas de JavaScript . . . . . . . . . . . . . . . . . . . . Propiedades del objeto Math . . . . . . . . . . . . . . . . . . . . . . 15 . 94 . 101 . 101 . 141 . . . . . . . . 185 185 188 188 195 196 197 223 B.1. Equivalencias para pasar del sistema decimal al hexadecimal . . . . . . 290 B.2. Nombres de algunos colores en HTML . . . . . . . . . . . . . . . . . . 294 xiii Índice de guras 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. Leonard Kleinrock junto al primer IMP . . . . . . . . . . . . . . . . . El primer nodo de ARPANET . . . . . . . . . . . . . . . . . . . . . . . Los cuatro primeros nodos de ARPANET . . . . . . . . . . . . . . . . Diseño lógico de ARPANET en abril de 1971 . . . . . . . . . . . . . . Los pilares de la Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tim Berners-Lee junto a una pantalla de ordenador que muestra su primer navegador web . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7. Página actual visualizada con Mosaic 1.0 . . . . . . . . . . . . . . . . . 2.8. Página actual visualizada con Netscape Communicator 4.78 . . . . . . 2.9. Cuadro de diálogo About en NCSA Mosaic 1.0 . . . . . . . . . . . . . 2.10. Cuadro de diálogo Acerca de Internet Explorer en Microsoft Internet Explorer 5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11. El primer navegador web ejecutándose en un ordenador NeXT . . . . 2.12. El primer navegador web ejecutándose en un ordenador NeXT . . . . 2.13. Ejemplo de página web de la primera generación . . . . . . . . . . . . 2.14. Ejemplo de página web de la primera generación . . . . . . . . . . . . 2.15. Ejemplo de página web de la segunda generación . . . . . . . . . . . . 2.16. Ejemplo de página web de la segunda generación . . . . . . . . . . . . 2.17. Ejemplo de página web de la tercera generación . . . . . . . . . . . . . 2.18. Ejemplo de página web de la tercera generación . . . . . . . . . . . . . 2.19. Ejemplo de página web de la cuarta generación . . . . . . . . . . . . . 2.20. Ejemplo de página web de la cuarta generación . . . . . . . . . . . . . 2.21. Ejemplo de página web de la cuarta generación . . . . . . . . . . . . . 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. Escalabilidad horizontal Escalabilidad vertical . . Separación de funciones Presentación distribuida Aplicación distribuida . Datos distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11 12 13 16 18 19 20 20 22 23 24 26 27 29 30 32 33 35 36 37 41 41 42 43 43 43 xvi Índice de guras 3.7. Arquitectura de tres niveles . . . . . . . . . . . . . . . . . . . . . . . . 44 4.1. Esquema básico de una aplicación web . . . . . . . . . . . . . . . . . . 48 4.2. Tecnologías empleadas en el cliente y en el servidor web 4.3. Arquitectura de las aplicaciones web: todo en un servidor 4.4. Arquitectura de las aplicaciones web: separación servidor de datos 4.5. Arquitectura de las aplicaciones web: todo en un servidor, con servicio 4.6. Arquitectura de las aplicaciones web: separación servidor de datos, con servicio de aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.7. Arquitectura de las aplicaciones web: todo separado . . . . . . . . . . 57 4.8. Arquitectura de las aplicaciones web: todo separado . . . . . . . . . . 58 66 de aplicaciones . . . . . . . . 51 . . . . . . . 55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 56 5.1. Distintos tipos de estructuras físicas . . . . . . . . . . . . . . . . . . . 5.2. Distintos tipos de estructuras físicas . . . . . . . . . . . . . . . . . . . 67 5.3. Tipos de enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.4. Estructura secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.5. Ejemplo de estructura secuencial . . . . . . . . . . . . . . . . . . . . . 72 5.6. Ejemplo de estructura secuencial . . . . . . . . . . . . . . . . . . . . . 73 5.7. Ejemplo de estructura secuencial . . . . . . . . . . . . . . . . . . . . . 74 5.8. Ejemplo de estructura secuencial . . . . . . . . . . . . . . . . . . . . . 75 5.9. Estructura en rejilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.10. Ejemplo de estructura en rejilla: versión normal . . . . . . . . . . . . . 77 5.11. Ejemplo de estructura en rejilla: versión para imprimir . . . . . . . . . 78 5.12. Ejemplo de estructura en rejilla: versión para discapacitados . . . . . . 79 5.13. Estructura en árbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.14. Problemas en las estructuras en árbol . . . . . . . . . . . . . . . . . . 80 5.15. Estructura en red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.16. Estructura mixta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.17. Comparación de las cuatro estructuras lógicas o de navegación básicas 83 5.18. Ejemplo de rastro de las migas de pan . . . . . . . . . . . . . . . . . 84 5.19. Ejemplo de esquema de numeración de los pasos: paso 1 . . . . . . . . 85 5.20. Ejemplo de esquema de numeración de los pasos: paso 2 . . . . . . . . 86 5.21. Ejemplo de esquema de numeración de los pasos: paso 3 . . . . . . . . 87 5.22. Ejemplo de esquema de numeración de los pasos: paso 4 . . . . . . . . 88 6.1. Primera página HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.2. Ejemplo de encabezados . . . . . . . . . . . . . . . . . . . . . . . . . . 106 6.3. Formatos físicos y lógicos 6.4. Resultados inesperados al solapar etiquetas 6.5. Distintos tipos de letra con la etiqueta <FONT> en Netscape Com- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . municator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 108 110 xvii Índice de guras 6.6. Distintos tipos de letra con la etiqueta <FONT> en Microsoft Internet Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 6.7. Distintos tamaños de letra con la etiqueta <FONT> . . . . . . . . . . 111 6.8. Alineamiento de párrafos: izquierda, derecha, centrado y justicado . . 113 6.9. Bloques de texto con distinta sangría . . . . . . . . . . . . . . . . . . . 114 6.10. Distintos tipos de líneas . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.11. Listas de denición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 6.12. Listas ordenadas 119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13. Listas no ordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.14. Enlace a un destino interno . . . . . . . . . . . . . . . . . . . . . . . . 121 124 6.15. Destino del enlace interno . . . . . . . . . . . . . . . . . . . . . . . . . 124 6.16. Página con enlace a otra página . . . . . . . . . . . . . . . . . . . . . . 125 6.17. Página con enlace a otra página . . . . . . . . . . . . . . . . . . . . . . 126 6.18. Página con dos enlaces a otra página . . . . . . . . . . . . . . . . . . . 127 6.19. Página destino de los enlaces . . . . . . . . . . . . . . . . . . . . . . . 128 6.20. Página destino de los enlaces . . . . . . . . . . . . . . . . . . . . . . . 6.21. Envío de un correo electrónico mediante un enlace 128 . . . . . . . . . . . 130 6.22. Mensaje visualizado en Netscape Messenger . . . . . . . . . . . . . . . 130 6.23. Tabla sencilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 6.24. Tabla fusión de varias celdas . . . . . . . . . . . . . . . . . . . . . . . 134 6.25. Alineamiento del contenido de una tabla . . . . . . . . . . . . . . . . . 136 6.26. Distintas distancias entre celdas . . . . . . . . . . . . . . . . . . . . . . 139 6.27. Tablas como marcos 140 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.28. La misma imagen GIF en blanco/negro y en color . . . . . . . . . . . 142 6.29. GIF transparente sobre fondo blanco . . . . . . . . . . . . . . . . . . . 142 6.30. GIF transparente sobre fondo no blanco . . . . . . . . . . . . . . . . . 142 6.31. Distintos tamaños de pancartas (banners) . . . . . . . . . . . . . . . . 144 6.32. Imagen en formato PNG y detalle 146 . . . . . . . . . . . . . . . . . . . . 6.33. Imagen en formato JPG (alta calidad) y detalle . . . . . . . . . . . . . 146 6.34. Imagen en formato JPG (baja calidad) y detalle 146 . . . . . . . . . . . . 6.35. Imagen PNG con transparencias visualizada en Netscape Communicator 4.78 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.36. Imagen PNG con transparencias visualizada en Microsoft Internet Explorer 5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.37. Imagen PNG con transparencias visualizada en Opera 6.0 . . . . . . . 148 6.38. Imágenes con distinto alineamiento del texto 150 . . . . . . . . . . . . . . 6.39. Formulario con distintos controles . . . . . . . . . . . . . . . . . . . . . 154 6.40. Distintas listas de selección 157 . . . . . . . . . . . . . . . . . . . . . . . . 6.41. Áreas de texto de distinto tamaño . . . . . . . . . . . . . . . . . . . . 158 6.42. Formulario sin alineamiento de los controles . . . . . . . . . . . . . . . 159 6.43. Formulario con alineamiento de los controles . . . . . . . . . . . . . . . 160 6.44. Página con dos marcos verticales . . . . . . . . . . . . . . . . . . . . . 164 xviii Índice de guras 6.45. Página con dos marcos verticales . . . . . . . . . . . . . . . . . . . . . 164 8.1. Código JavaScript en un enlace . . . . . . . . . . . . . . . . . . . . . . 180 8.2. Código VBScript en un enlace . . . . . . . . . . . . . . . . . . . . . . . 180 9.1. Ejemplo de caracteres especiales 196 9.2. Ejemplo de uso de la instrucción for 9.3. Ejemplo de uso de la instrucción while . . . . . . . . . . . . . . . . . . 204 9.4. Ejemplo de uso de la instrucción for(. . . in . . . ) . . . . . . . . . . . . . 207 9.5. Tabla de caracteres ASCII . . . . . . . . . . . . . . . . . . . . . . . . . 219 9.6. Validación campo nulo . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.7. Validación alfabética . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 9.8. Validación numérica 235 9.9. Validación de una fecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1. Modelo de objetos en Netscape Communicator 201 238 . . . . . . . . . . . . . 241 10.2. Propiedades del objeto document . . . . . . . . . . . . . . . . . . . . . 246 10.3. Propiedades del objeto document . . . . . . . . . . . . . . . . . . . . . 249 10.4. Acceso a los controles de un formulario . . . . . . . . . . . . . . . . . . 251 10.5. Acceso a los controles de un formulario . . . . . . . . . . . . . . . . . . 253 10.6. Acceso a los controles de un formulario . . . . . . . . . . . . . . . . . . 255 10.7. Propiedades del objeto location . . . . . . . . . . . . . . . . . . . . . . 258 10.8. Propiedades del objeto navigator en Netscape Communicator . . . . . 260 10.9. Propiedades del objeto navigator en Microsoft Internet Explorer . . . 260 10.10.Propiedades del objeto screen en Netscape Communicator . . . . . . . 262 10.11.Interacción entre varias ventanas a través del objeto window . . . . . . 267 10.12.Refresco automático de una página mediante JavaScript . . . . . . . . 269 10.13.Modelo de objetos en Microsoft Internet Explorer . . . . . . . . . . . . 270 B.1. Ventana para modicar colores en Microsoft Paint 291 . . . . . . . . . . . B.2. Ventana para denir colores personalizados en Microsoft Paint B.3. Calculadora en modo cientíco . . . . 292 . . . . . . . . . . . . . . . . . . . . . . 293 B.4. Cuadro de diálogo para cambiar colores en Microsoft Internet Explorer 295 B.5. Cuadro de diálogo para cambiar colores en Netscape Communicator . 295 C.1. Consola JavaScript de Netscape Communicator . . . . . . . . . . . . . 301 C.2. Consola JavaScript con mensajes de error 303 . . . . . . . . . . . . . . . . C.3. Evaluación de expresiones . . . . . . . . . . . . . . . . . . . . . . . . . 305 C.4. Netscape JavaScript Debugger 306 . . . . . . . . . . . . . . . . . . . . . . C.5. SmartUpdate en Netscape Communicator . . . . . . . . . . . . . . . . 307 C.6. Mensaje de alerta de Microsoft Internet Explorer . . . . . . . . . . . . 308 C.7. Mensaje de alerta en la barra de estado de Microsoft Internet Explorer 309 C.8. Opciones de Microsoft Internet Explorer . . . . . . . . . . . . . . . . . 310 xix Índice de guras C.9. Mensaje de error en Microsoft Internet Explorer . . . . . . . . . . . . 311 C.10.Mensaje de error en Microsoft Internet Explorer . . . . . . . . . . . . 311 C.11.Nuevas opciones de Microsoft Internet Explorer . . . . . . . . . . . . . 311 C.12.Depurador de Microsoft 312 . . . . . . . . . . . . . . . . . . . . . . . . . . Índice de acrónimos ADSL Asymmetric Digital Subscriber Line Tecnología de comunicación que permite obtener altas velocidades de transmisión a través de las líneas telefónicas tradicionales. La comunicación es asimétrica porque las velocidades de recepción (128 Kbps hasta 9 Mbps) son mayores que las de transmisión (16 Kbps hasta 640 Kbps). API Application Program Interface Interfaz de programación de aplicaciones. Conjunto de constantes, funciones y protocolos que permiten programar aplicaciones. Una buena API facilita la tarea de desarrollar aplicaciones, ya que facilita todas las piezas y el programador sólo tiene que unirlas para lograr el n que desea. ARPA Advanced Research Projects Agency Agencia de Proyectos de Investigación Avanzados. Agencia creada por el Departamento de Defensa de los Estados Unidos de Norteamérica en 1958. También conocida como DARPA. A lo largo de los años ha cambiado su nombre varias veces: en 1971 DARPA, en 1993 ARPA y en 1996 DARPA otra vez. El proyecto más conocido de los desarrollados por esta agencia es ARPANET (o ARPAnet), semilla de la actual Internet. ASP Active Server Pages Tecnología propietaria de Microsoft que permite crear páginas web dinámicas en el servidor. Desarrollada con el objetivo de sustituir a la tecnología CGI, ofrece una serie de características que facilitan la programación de aplicaciones web. Las páginas ASP suelen estar programadas en VBScript, aunque también se pueden programar en otros lenguajes, como JScript. ASCII American Standard Code for Information Interchange Código binario utilizado para representar letras, números, símbolos, etc. A cada carácter se le asigna un número del 0 al 127 (7 bits). Por ejemplo, el código ASCII para la A mayúscula es 65. Existen códigos ASCII extendidos de 256 caracteres (8 bits), que permiten representar caracteres no ingleses como las vocales acentuadas o la eñe. Los caracteres de la parte superior (128 a 255) xxi xxii Índice de acrónimos de estos códigos ASCII extendidos varían de uno a otro. Por ejemplo, uno de los más extendidos es ISO Latin-1 (ocialmente ISO-8859-1). BMP Bit-map Formato gráco de mapa de bits estándar en los sistemas operativos Microsoft Windows. Almacena las imágenes en un formato llamado mapa de bits independiente del dispositivo, que signica que el color de cada punto ( pixel ) se almacena de un modo independiente del método empleado por un dispositivo para representar el color. Existen diversos formatos: 1 bit (blanco y negro), 4 bits (16 colores), 8 bits (256 colores) y 24 bits (16 777 216 colores). CERN Conseil Européenne pour le Recherche Nucléaire Organización Europea para la Investigación Nuclear. Es el mayor centro cientí- co a nivel mundial dedicado a la física de partículas. Su sede central se encuentra en Ginebra, Suiza. Fundado en 1954 por 12 países, actualmente está formado por 20 países, entre ellos España. Tim Berners-Lee, mientras trabajaba en él a principios de 1990, inventó la CGI Common Gateway Interface WWW. Estándar que permite el intercambio de información entre un servidor y un programa externo al servidor. Un programa CGI es un programa preparado para recibir y enviar datos desde y hacia un servidor web según este estándar. Normalmente se programan en C o en Perl , aunque se puede usar cualquier lenguaje de propósito general. CSP Caché Server Pages Tecnología propietaria de Intersystems que permite crear páginas web diná- ASP y JSP en que la lógica de negocio reside junto con la lógica de datos en el sistema micas en el servidor. Se diferencia de otras tecnologías similares como gestor de bases de datos. CSS Cascading Style Sheets Tecnología empleada en la creación de páginas web, que permite un mayor control sobre el lenguaje HTML. Permite crear hojas de estilo que denen como cada elemento, como por ejemplo los encabezados o los enlaces, se tiene que mostrar. El término en cascada indica que diferentes hojas de estilo se pueden aplicar sobre la misma página. CSS ha sido desarrollada por W3C. DARPA Defense Advanced Research Projects Agency Véase ARPA. DHTML Dynamic HTML Conjunto de extensiones a HTML que permiten modicar el contenido de una página web en el cliente sin necesidad de establecer una nueva comunicación con el servidor. Se basa en el uso de DOM para acceder al contenido de la página.