
JavaScript es básicamente un lenguaje de creación de secuencias de comandos en el lado del cliente que se utiliza en navegadores Web. En la actualidad se usa para que los programadores puedan interactuar con páginas Web y con la propia ventana del navegador. JavaScript se basa someramente en Java, un lenguaje de programación orientado a objetos que se utiliza en la Web a través de subprogramas incrustados.
JavaScript para desarrolladores Web ofrece una introducción de nivel de programador junto con las características más útiles y avanzadas de JavaScript.
En este libro analizaremos este lenguaje desde sus inicios en los primeros navegadores de Netscape hasta las implementaciones actuales compatibles con XML y los servicios Web. Aprenderá a ampliar el lenguaje para adecuarlo a sus necesidades concretas y a establecer comunicaciones perfectas entre cliente y servidor sin intermediarios como Java o marcos ocultos. En definitiva, aprenderá cómo utilizar el verdadero potencial de este lenguaje para crear aplicaciones propias que resuelvan los problemas empresariales a los que se enfrentan los programadores Web.



Acerca del autor
Agradecimientos
Introducción
Contenidos del libro
A quién va dirigido este libro
Requisitos para utilizar el libro
Estructura del libro
Convenciones
Código fuente
1. Definir JavaScript
Una breve historia
Implementaciones de JavaScript
ECMAScript
Ediciones de ECMAScript
Compatibilidad con ECMAScript
Compatibilidad de ECMAScript en navegadores Web
El Modelo de objetos de documento (DOM)
Importancia del DOM
Niveles DOM
Otros DOM
Compatibilidad DOM en navegadores Web
El Modelo de objetos de navegador (BOM)
Resumen
2. Fundamentos de ECMAScript
Sintaxis
Variables
Palabras clave
Palabras reservadas
Valores primitivos y de referencia
Tipos primitivos
El operador typeof
El tipo Undefined
El tipo Null
El tipo Boolean
El tipo Number
El tipo String
Conversiones
Convertir en cadenas
Convertir a números
Convertir tipos
Tipos de referencia
La clase Object
La clase Boolean
La clase Number
La clase String
El operador instanceof
Operadores
Operadores unarios
delete
void
Incremento/decremento prefijo
Incremento/decremento sufijo
Más y menos unarios
Operadores de orden de bits
Enteros
NOT de orden de bits
AND de orden de bits
OR de orden de bits
XOR de orden de bits
Desplazar a la izquierda
Desplazar hacia la derecha con signo
Desplazar hacia la derecha sin signo
Operadores Booleanos
NOT lógico
AND lógico
OR lógico
Operadores de multiplicación
Multiplicación
División
Módulo
Operadores de suma
Suma
Resta
Operadores relacionales
Operadores de igualdad
Igual y no igual
Idénticamente igual y no idénticamente igual
El operador condicional
Operadores de asignación
Operador de coma
Instrucciones
La instrucción if
Instrucciones iterativas
do-while
while
for
for-in
Etiquetar instrucciones
Las instrucciones break y continue
La instrucción with
La instrucción switch
Funciones
Sobrecargar
El objeto arguments
La clase Function
Cierres
Resumen
3. Fundamentos de los objetos
Terminología orientada a objetos
Requisitos de los lenguajes orientados a objetos
Composición de un objeto
Trabajar con objetos
Declarar y crear instancias
Referencias de objetos
Anular referencias a objetos
Vinculación temprana frente a vinculación tardía
Tipos de objetos
Objetos nativos
La clase Array
La clase Date
Objetos incorporados
El objeto Global
El objeto Math
Objetos anfitrión
Ámbito
Público, protegido y privado
Estático no es estático
La palabra clave this
Definir clases y objetos
Paradigma de factoría
Paradigma de constructores
Paradigma de prototipos
Paradigma híbrido de constructores y prototipos
Método de prototipos dinámicos
Paradigma híbrido de factoría
Qué opción utilizar
Un ejemplo práctico
Modificar objetos
Crear un nuevo método
Volver a definir un método existente
Vinculación más tardía
Resumen
4. Herencia
Funcionamiento de la herencia
Implementar la herencia
Métodos de herencia
Enmascarar objetos
El método call()
El método apply()
Encadenar prototipos
Método híbrido
Un ejemplo más práctico
Crear la clase base
Crear las subclases
Probar el código
Prototipos dinámicos
Paradigmas de herencia alternativos
zInherit
Modificar el ejemplo del polígono
Admitir los prototipos dinámicos
Admitir herencia múltiple
xbObjects
Objetivo
Ejemplo de los polígonos
Resumen
5. JavaScript en el navegador
JavaScript en HTML
La etiqueta
Formato de archivos externos
Código en línea frente a archivos externos
Ubicar etiquetas
Ocultar o no ocultar
La etiqueta
Cambios en XHTML
JavaScript en SVG
Fundamentos de SVG
La etiqueta en SVG
Ubicar etiquetas en SVG
El modelo de objetos de navegador
El objeto window
Manipular ventanas
Desplazarse y abrir nuevas ventanas
Cuadros de diálogo de sistema
La barra de estado
Intervalos y tiempos de espera
Historial
El objeto document
El objeto location
El objeto navigator
El objeto screen
Resumen
6. Fundamentos del DOM
Definición del DOM
Introducción a XML
Un API para XML
Jerarquía de nodos
DOM específicos del lenguaje
Admitir el DOM
Utilizar el DOM
Acceder a nodos relativos
Comprobar el tipo de nodo
Trabajar con atributos
Acceder a nodos concretos
getElementsByTagName()
getElementsByName()
getElementById()
Crear y manipular nodos
Crear nuevos nodos
createElement(), createTextNode(), appendChild()
removeChild(), replaceChild() e insertBefore()
createDocumentFragment()
Características del DOM HTML
Atributos como propiedades
Métodos de tablas
Recorrer el DOM
NodeIterator
TreeWalker
Determinar el cumplimiento con el DOM
Nivel 3 del DOM
Resumen
7. Expresiones regulares
Compatibilidad con expresiones regulares
Utilizar un objeto RegExp
Métodos de cadena ampliados
Patrones sencillos
Metacaracteres
Utilizar caracteres especiales
Clases de caracteres
Clases sencillas
Clases de negación
Clases de intervalo
Clases de combinación
Clases predefinidas
Cuantificadores
Cuantificadores simples
Cuantificadores avaros, reticentes y posesivos
Patrones complejos
Agrupar
Referencias inversas
Alternar
Grupos sin captura
Búsquedas directas
Límites
Modo multilínea
Entender el objeto RegExp
Propiedades de instancias
Propiedades estáticas
Patrones comunes
Validar fechas
Validar tarjetas de crédito
Validar direcciones de correo electrónico
Resumen
8. Detectar navegadores y sistemas operativos
El objeto navigator
Métodos de detección de navegadores
Detección de objetos/características
Detección de cadenas de agente de usuario
Breve historia de las cadenas de agente de usuario
Netscape Navigator 3.0 e Internet Explorer 3.0
Netscape Communicator 4.0 e Internet Explorer 4.0
Internet Explorer 5.0 y superior
Mozilla
Opera
Safari
Epílogo
La secuencia de comandos de detección de navegadores
Metodología
Primeros pasos
Detectar Opera
Detectar Konqueror/Safari
Detectar Internet Explorer
Detectar Mozilla
Detectar Netscape Communicator 4.x
La secuencia de comandos de detección de plataformas y sistemas operativos
Metodología
Primeros pasos
Detectar sistemas operativos de Windows
Detectar sistemas operativos de Macintosh
Detectar sistemas operativos de Unix
La secuencia de comandos completa
Ejemplo: una página de inicio de sesión
Resumen
9. Eventos
Los eventos en la actualidad
Flujo de eventos
Propagar eventos
Capturar eventos
Flujo de eventos del DOM
Controladores y escuchadores de eventos
Internet Explorer
DOM
El objeto de evento
Localizar
Propiedades y métodos
Internet Explorer
DOM
Semejanzas
Obtener el tipo de evento
Obtener el código de tecla (eventos keydown/keyup)
Detectar Mayús, Alt y Control
Obtener las coordenadas cliente
Obtener las coordenadas de pantalla
Diferencias
Obtener el destino
Obtener el código de caracteres
Impedir el comportamiento predeterminado de un evento
Detener la propagación de eventos
Tipos de eventos
Eventos de ratón
Propiedades de eventos
Secuencias
Eventos de teclado
Propiedades de eventos
Secuencias
Eventos HTML
Los eventos load y unload
El evento resize
El evento scroll
Eventos de mutación
Eventos entre navegadores
El objeto EventUtil
Añadir y eliminar controladores de eventos
Aplicar formato al objeto de evento
Obtener el objeto event
Ejemplo
Resumen
10. Técnicas avanzadas del DOM
Crear secuencias de comandos de estilo
Métodos de estilo del DOM
Personalizar informaciones de pantalla
Secciones replegables
Acceder a hojas de estilo
Computar estilos
Estilos computados en IE
Estilos computados en el DOM
innerText e innerHTML
outerText y outerHTML
Rangos
Rangos en el DOM
Selección simple en rangos del DOM
Selección compleja en rangos del DOM
Interactuar con contenidos de rangos del DOM
Añadir contenidos de rangos del DOM
Replegar un rango del DOM
Comparar rangos del DOM
Clonar rangos del DOM
Limpiar
Rangos de Internet Explorer
Selección simple de rangos en IE
Selección compleja en rangos de IE
Interactuar con contenidos de rangos en IE
Replegar un rango de IE
Comparar rangos en IE
Clonar un rango de IE
Practicidad de los rangos
Resumen
11. Formularios e integridad de datos
Fundamentos sobre formularios
Crear secuencias de comandos para el elemento
Obtener referencias de formularios
Acceder a campos de formulario
Semejanzas de los campos de formulario
Enfoque en el primer campo
Remitir formularios
Enviar una vez
Restablecer formularios
Cuadros de texto
Recuperar y modificar el valor de un cuadro de texto
Seleccionar texto
Eventos de cuadro de texto
Seleccionar texto automáticamente
Avanzar automáticamente con tabuladores
Limitar caracteres
Permitir y bloquear caracteres en cuadros de texto
Bloquear caracteres incorrectos
Permitir caracteres válidos
Operaciones de pegado
Cuadros de texto numéricos con las teclas Flecha arriba y Flecha abajo
Cuadros de lista y cuadros combinados
Acceder a opciones
Recuperar y modificar la opción seleccionada
Añadir opciones
Eliminar opciones
Desplazar opciones
Reordenar opciones
Crear un cuadro de texto de sugerencias automáticas
Comparar
Funcionamiento interno
Resumen
12. Ordenar tablas
Punto de partida: matrices
El método reverse()
Ordenar una columna de una tabla
La función de comparación
La función sortTable()
Ordenar una tabla de varias columnas
El generador de funciones de comparación
Modificar la función sortTable()
Ordenar en orden descendente
Modificar la función sortTable()
Ordenar con diferentes tipos de datos
Crear una función de conversión
Modificar el código
Técnicas avanzadas de ordenación
El concepto
Modificar el código
Resumen
13. Arrastrar y soltar
Arrastrar y soltar del sistema
Eventos de arrastrar y soltar
Eventos de elemento arrastrado
Eventos de destino
Utilizar todos los eventos de arrastrar y soltar
Crear un destino propio
El objeto dataTransfer
Métodos
dropEffect y effectAllowed
El método dragDrop()
Ventajas e inconvenientes
Funciones simuladas de arrastrar y soltar
El código
Crear destinos
Ventajas e inconvenientes
zDragDrop
Crear un elemento que se pueda arrastrar
Crear un destino
Eventos
Ejemplo
Resumen
14. Solucionar errores
La importancia de la resolución de errores
Errores frente a excepciones
Informar sobre errores
Internet Explorer (Windows)
Internet Explorer (Mac OS)
Mozilla (todas las plataformas)
Safari (MacOS X)
Opera 7 (todas las plataformas)
Solucionar errores
El controlador de eventos onerror
Extraer información sobre errores
Errores de carga de imágenes
Solucionar errores sintácticos
La instrucción try...catch
Instrucciones try...catch anidadas
El objeto Error
Determinar el tipo de error
Generar excepciones
Técnicas de depuración
Utilizar avisos
Utilizar la consola de Java
Enviar mensajes a la consola de Java (Opera 7+)
Generar errores personalizados
El verificador de JavaScript
Depuradores
El depurador de secuencias de comandos de Microsoft
Ejecución
La ventana
Puntos de interrupción y stepping
Venkman, el depurador de Mozilla
Ejecución
La ventana
El panel Loaded Scripts
Puntos de interrupción
Pasar por el código
Inspecciones
Crear perfiles
Resumen
15. XML en JavaScript
Compatibilidad con el DOM XML en navegadores
Compatibilidad con el DOM XML en IE
Crear el DOM
Cargar XML
Recuperar XML
Analizar errores
Compatibilidad con el DOM XML en Mozilla
Crear el DOM
Cargar XML
Recuperar XML
Analizar errores
Combinar interfaces
Modificar la creación del DOM
La rama de IE
La rama de Mozilla
Solucionar errores
El código completo
Compatibilidad de XPath en navegadores
Introducción a XPath
Compatibilidad con XPath en IE
Compatibilidad con XPath en Mozilla
Compatibilidad con XSLT en navegadores
Compatibilidad con XSLT en IE
Compatibilidad con XSLT en Mozilla
Resumen
16. Comunicación entre cliente y servidor
Cookies
Componentes de las cookies
Otras medidas de seguridad
Cookies en JavaScript
Cookies en el servidor
JSP
ASP.NET
PHP
Pasar cookies entre cliente y servidor
Ocultar marcos
Utilizar iframes
Solicitudes HTTP
Utilizar encabezados
Implementaciones de imitación
Realizar una solicitud GET
Realizar una solicitud POST
Solicitudes LiveConnect
Realizar una solicitud GET
Realizar una solicitud POST
Solicitudes HTTP inteligentes
El método get()
El método post()
Aplicaciones prácticas
Resumen
17. Servicios Web
Curso rápido sobre servicios Web
Definición de servicio Web
WSDL
Servicios Web en Internet Explorer
Utilizar el componente WebService
Ejemplo de componentes WebService
Servicios Web en Mozilla
Privilegios mejorados
Utilizar los métodos SOAP
Utilizar proxy WSDL
Enfoque entre navegadores
El objeto WebService
El servicio Temperature
Utilizar el objeto TemperatureService
Resumen
18. Interactuar con complementos
Por qué utilizar complementos
Complementos más conocidos
Tipos MIME
Incrustar complementos
Incluir parámetros
Netscape 4.x
Detectar complementos
Detectar complementos de estilo de Netscape
Detectar complementos de ActiveX
Detección entre navegadores
Subprogramas de Java
Incrustar subprogramas
Hacer referencia a subprogramas en JavaScript
Crear subprogramas
Comunicar JavaScript y Java
Convertir tipos
Solucionar excepciones de Java
Restricciones de seguridad
Comunicar Java y JavaScript
Películas de Flash
Incrustar películas de Flash
Hacer referencia a películas de Flash
Comunicar JavaScript y Flash
Comunicar Flash y JavaScript
getURL()
fscommand()
Controles ActiveX
Resumen
19. Problemas de implementación
Seguridad
La Política de origen idéntico
Efecto sobre secuencias de comandos del BOM y el DOM
La excepción de la regla
Problemas con objetos de ventana
Problemas concretos de Mozilla
Privilegios
Secuencias de comandos con firma
Principios del código base
Limitar recursos
Problemas de internacionalización
Detectar idiomas con JavaScript
Estrategias
Consideraciones sobre cadenas
Definir Unicode
Representar en JavaScript
Compatibilidad de navegador frente a compatibilidad de sistema operativo
Cadenas a prueba de errores
Utilizar comillas dobles
Optimizar JavaScript
Tiempo de descarga
Eliminar todos los comentarios
Eliminar tabulaciones y espacios
Eliminar los saltos de línea
Sustituir nombres de variable
El reductor de ECMAScript
Otras formas de reducir el número de bytes
Utilizar literales de matriz y de objeto
Tiempo de ejecución
Ámbito
Informática para novatos
Peculiaridades de JavaScript
Minimizar el número de instrucciones
Utilizar el DOM con precaución
Problemas de propiedad intelectual
Técnicas de ofuscación
Microsoft Script Encoder (sólo para IE)
Resumen
20. La evolución de JavaScript
ECMAScript 4
La propuesta de Netscape
Palabras clave y reservadas
Variables
Funciones
Literales numéricos
Tipos
Clases
Herencia
Implementaciones
Mozilla
Microsoft
ECMAScript para XML
Enfoque
El bucle for each...in
Nuevas clases
La clase Namespace
La clase QName
La clase XML
La clase XMLList
Implementaciones
Resumen
Índice alfabético
Otros clientes que compraron JavaScript para desarrolladores Web, también compraron:
Otros libros de JavaScript: