Implementación de JavaScript
- Página anterior Historia de JavaScript
- Página siguiente Sintaxis de ECMAScript
El ECMAScript fundamental de JavaScript describe la sintaxis y los objetos básicos del lenguaje;
DOM describe métodos y interfaces para manejar el contenido de la página web;
BOM describe métodos y interfaces para interactuar con el navegador.
ECMAScript, DOM y BOM
A pesar de que ECMAScript es un estándar importante, no es la única parte de JavaScript, ni siquiera la única parte que se ha estandarizado. De hecho, una implementación completa de JavaScript está compuesta por 3 partes diferentes:

ECMAScript
ECMAScript no está vinculado a ningún navegador específico, de hecho, tampoco menciona métodos para cualquier entrada o salida de usuarios (lo que es diferente de C, que necesita depender de bibliotecas externas para completar estas tareas). ¿Entonces, ¿qué es ECMAScript? La descripción del estándar ECMA-262 (el segundo párrafo) es la siguiente:
“ECMAScript puede proporcionar capacidades de programación de scripts fundamentales para diferentes tipos de entornos de anfitrión, por lo tanto, el lenguaje de scripts fundamentales está regulado de manera separada de cualquier entorno de anfitrión específico... ...”
El navegador web es un entorno de host para ECMAScript, pero no es el único. De hecho, hay innumerables otros entornos variados (como Nombas ScriptEase y ActionScript utilizado por Macromedia tanto en Flash como en Director MX) que pueden contener implementaciones de ECMAScript. ¿Qué especifica ECMAScript fuera de los navegadores web?
En términos simples, ECMAScript describe lo siguiente:
- Gramática
- Tipo
- Instrucción
- Palabra clave
- Palabra reservada
- Operador
- Objeto
ECMAScript es simplemente una descripción, que define todas las propiedades, métodos y objetos del lenguaje de script. Otros lenguajes pueden implementar ECMAScript como base para funcionalidades, como JavaScript:

Cada navegador tiene su propia implementación de la interfaz ECMAScript, luego esta implementación se expande, incluyendo DOM y BOM (se discutirá en los siguientes capítulos). Claro, hay otros lenguajes que han implementado ECMAScript para servir como punto de referencia para funcionalidades, como JavaScript:
1. Versión de ECMAScript
ECMAScript se divide en varias versiones diferentes, y se define en un estándar llamado ECMA-262. Al igual que otros estándares, ECMA-262 será editado y actualizado. Cuando hay actualizaciones importantes, se publica una nueva versión del estándar. La última versión de ECMA-262 es 5.1, publicada en junio de 2011.
La primera versión de ECMA-262 es esencialmente igual a Netscape JavaScript 1.1, solo que se eliminó todo el código relacionado con el navegador, además de algunas pequeñas ajustes. Primero, ECMA-262 requiere soporte para la norma Unicode (para soportar múltiples idiomas). Segundo, requiere que los objetos sean independientes de la plataforma (el JavaScript 1.1 de Netscape, de hecho, tiene diferentes implementaciones de objetos, como el objeto Date, que depende de la plataforma). Esta es la razón principal por la que JavaScript 1.1 y 1.2 no cumplieron con la norma ECMA-262 de primera edición.
La mayoría de las actualizaciones de la segunda edición de ECMA-262 fueron esencialmente editoriales. Esta actualización del estándar fue para lograr una coincidencia estricta con ISO/IEC-16262, y no se añadieron, cambiaron ni eliminaron contenido. ECMAScript generalmente no sigue la segunda edición.
La tercera edición de ECMA-262 fue la primera actualización real de este estándar. Proporcionó actualizaciones en el manejo de cadenas, definición de errores y salida numérica. Además, añadió soporte para expresiones regulares, nuevas instrucciones de control, manejo de excepciones try...catch, y algunos cambios pequeños para la internacionalización del estándar. En general, marcó el nacimiento de ECMAScript como un lenguaje de programación real.
2. ¿Qué es la conformidad de ECMAScript?
En ECMA-262, la conformidad de ECMAScript tiene una definición clara. Un lenguaje de script debe cumplir con los siguientes cuatro principios básicos:
- Las implementaciones que cumplen deben cumplir con todo el soporte “tipos, valores, objetos, propiedades, funciones y lenguaje de programas y semántica” descrito en ECMA-262 (ECMA-262, primera página)
- Las implementaciones que cumplen deben soportar el estándar de caracteres Unicode (UCS)
- Las implementaciones que cumplen pueden agregar “tipos adicionales, valores, objetos, propiedades y funciones” no especificados en ECMA-262. ECMA-262 describe estos agregados como nuevos objetos o nuevas propiedades de los objetos en la especificación
- Las implementaciones que cumplen pueden soportar la “sintaxis de programas y expresiones regulares” no definida en ECMA-262 (lo que significa que pueden reemplazar o expandir el soporte integrado de expresiones regulares)
Todas las implementaciones de ECMAScript deben cumplir con el estándar anterior.
3. Soporte de ECMAScript en los navegadores web
Netscape Navigator 3.0 que contiene JavaScript 1.1 fue lanzado en 1996. Luego, la especificación de JavaScript 1.1 fue presentada como un borrador de un nuevo estándar a EMCA. Con la popularidad explosiva de JavaScript, Netscape comenzó con entusiasmo a desarrollar la versión 1.2. Pero había un problema, ECMA no aceptó el borrador de Netscape. Poco después del lanzamiento de Netscape Navigator 3.0, Microsoft lanzó IE 3.0. Esta versión de IE contenía JScript 1.0 (el nombre de la implementación propia de JavaScript de Microsoft), que originalmente se planeó que fuera comparable a JavaScript 1.1. Luego, debido a la falta de documentación y algunas características repetitivas inapropiadas, JScript 1.0 estaba muy por debajo del nivel de JavaScript 1.1.
Antes de que se finalizara la primera versión de ECMA-262, se lanzó Netscape Navigator 4.0 con JavaScript 1.2 en 1997. Más tarde ese año, el estándar ECMA-262 fue aceptado y estandarizado. Por lo tanto, JavaScript 1.2 no es compatible con la primera versión de ECMAScript, aunque ECMAScript debería basarse en JavaScript 1.1.
El siguiente paso para JScript fue la inclusión de JScript 3.0 en IE 4.0 (la versión 2.0 se lanzó con IIS 3.0, pero no se incluyó en el navegador). Microsoft promovió a JScript 3.0 como el primer lenguaje de script verdaderamente compatible con el estándar ECMA. En ese momento, ECMA-262 aún no estaba finalizado, por lo que JScript 3.0 también sufrió el mismo destino que JavaScript 1.2 - no cumplió con el estándar ECMAScript final.
Netscape optó por actualizar su implementación de JavaScript en Netscape Navigator 4.06. JavaScript 1.3 permitió que Netscape cumpliera finalmente con la primera versión de ECMAScript. Netscape加入了Unicode estándar de soporte, y mantuvo todas las características nuevas introducidas en JavaScript 1.2, al mismo tiempo que logró la independencia de plataforma.
Cuando Netscape hizo público su código fuente como proyecto Mozilla, se planeaba que JavaScript 1.4 se integrara en Netscape Navigator 5.0. Sin embargo, una decisión audaz - volver a diseñar completamente el código de Netscape, destruyó este trabajo. JavaScript 1.4 solo se publicó como lenguaje de script del servidor para Netscape Enterprise Server y nunca se incluyó en los navegadores.
Hoy en día, todos los navegadores web principales cumplen con la tercera edición de ECMA-262.
La siguiente tabla enumera el soporte de ECMAScript en la mayoría de los navegadores web populares:
Navegador | Compatibilidad con DOM |
---|---|
Netscape Navigator 2.0 | - |
Netscape Navigator 3.0 | - |
Netscape Navigator 4.0 - 4.05 | - |
Netscape Navigator 4.06 - 4.79 | Edición 1 |
Netscape 6.0+ (Mozilla 0.6.0+) | Edición 3 |
Internet Explorer 3.0 | - |
Internet Explorer 4.0 | - |
Internet Explorer 5.0 | Edición 1 |
Internet Explorer 5.5+ | Edición 3 |
Opera 6.0 - 7.1 | Edición 2 |
Opera 7.2+ | Edición 3 |
Safari 1.0+/Konqueror ~ 2.0+ | Edición 3 |
DOM
DOM (Modelo de Objetos de Documento) es una interfaz de aplicación (API) para HTML y XML. DOM organiza toda la página en un documento compuesto por jerarquías de nodos. Cada parte de una página HTML o XML es un descendiente de un nodo. Considera la siguiente página HTML:
<html> <head> <title>Página de muestra</title> </head> <body> <p>¡Hola, mundo!</p> </body> </html>
Este código se puede dibujar con DOM como un diagrama de jerarquía de nodos:

El DOM representa el documento creando un árbol, lo que permite a los desarrolladores tener un control sin precedentes sobre el contenido y la estructura del documento. Con las API de DOM, se puede eliminar, agregar y reemplazar nodos de manera sencilla.
1. Por qué el DOM es indispensable
Desde que IE 4.0 y Netscape Navigator 4.0 comenzaron a soportar diferentes formas de HTML dinámico (DHTML), los desarrolladores por primera vez pudieron modificar su apariencia y contenido sin recargar la página. Esto fue un gran salto en la tecnología web, pero también trajo problemas enormes. Netscape y Microsoft desarrollaron sus propios DHTML, lo que puso fin a la era en la que los desarrolladores web solo tenían que escribir una página HTML para que se pudiera acceder en todos los navegadores.
La industria decidió que debía hacer algo para mantener la característica de plataforma cruzada de la Web, preocupados por que si dejaban que Netscape y la Compañía Microsoft lo hicieran así, la Web inevitablemente se dividiría en dos partes independientes, cada una adecuada para un navegador específico. Por lo tanto, el grupo responsable de especificar los estándares de comunicación web, W3C (World Wide Web Consortium), comenzó a desarrollar el DOM.
2. Los diferentes niveles del DOM
DOM Level 1 fue propuesto por W3C en octubre de 1998. Se compone de dos módulos, es decir, DOM Core y DOM HTML. El primero proporciona una estructura de documento basada en XML para acceder y operar con cualquier parte del documento; el segundo añade objetos y métodos específicos de HTML, extendiendo así el DOM Core.
Tenga en cuenta que DOM no es exclusivo de JavaScript, de hecho, muchos otros lenguajes lo han implementado. Sin embargo, el DOM en los navegadores web ya se ha implementado con ECMAScript, y ahora es una gran parte del lenguaje JavaScript.
DOM Level 1 es solo un objetivo, es decir, planificar la estructura del documento, mientras que el objetivo de DOM Level 2 es mucho más amplio. La ampliación del DOM original añade soporte para eventos de ratón y de interfaz de usuario (DHTML tiene un amplio soporte para estos), alcance, búsqueda (métodos repetitivos en el documento DOM) y soporte para CSS (hojas de estilo en capas) a través de interfaces de objetos. El DOM Core original introducido en el nivel 1 también añade soporte para los espacios de nombres XML.
DOM Level 2 introduce varios módulos nuevos de DOM, utilizados para manejar nuevos tipos de interfaces:
- Vista DOM - Descripción de seguimiento de las diversas vistas del documento (es decir, el documento antes y después de la estilización CSS)
- Eventos DOM - Descripción de las interfaces de eventos
- Estilo DOM - Descripción de las interfaces para manejar estilos basados en CSS
- Búsqueda y alcance de DOM - Descripción de las interfaces para buscar y operar en el árbol del documento
DOM Level 3 introduce métodos para cargar y mantener de manera uniforme los documentos (contenidos en el módulo nuevo DOM Load and Save) y métodos para validar los documentos (Validación DOM), lo que amplía aún más el DOM. En el nivel 3, DOM Core se amplía para soportar todas las características de XML 1.0, incluyendo XML Infoset, XPath y XML Base.
Al estudiar DOM, es posible que alguien mencione DOM Level 0. Tenga en cuenta que no existe un estándar DOM Level 0, es solo un punto de referencia histórico de DOM (DOM Level 0 se refiere a la DHTML original soportada en IE 4.0 y Netscape Navigator 4.0).
3. Otros DOM
Además de DOM Core y DOM HTML, otros varios lenguajes han publicado sus propios estándares de DOM. Todos estos lenguajes están basados en XML, y cada DOM agrega métodos y interfaces específicos para el lenguaje correspondiente:
- Lenguaje de vectores escalables (SVG) 1.0
- Lenguaje de marcado numérico (MathML) 1.0
- Lenguaje de integración de multimedia sincronizada (SMIL)
Notas:Si desea aprender más sobre el contenido relacionado, visite CodeW3C de Tutoriales SMIL y Tutoriales SVG.
Además, otros lenguajes también han desarrollado sus propias implementaciones de DOM, como el lenguaje de interfaz de usuario XML de Mozilla (XUL). Sin embargo, solo los lenguajes enumerados anteriormente son estándares recomendados por el W3C.
Soporte de DOM en navegadores web
DOM ya era un estándar antes de que los navegadores web comenzaran a implementarlo. La primera prueba de DOM de IE fue en la versión 5.0, aunque realmente no tenía soporte de DOM hasta la versión 5.5, cuando IE 5.5 implementó el Nivel 1 de DOM. Desde那时起,IE no ha introducido nuevas funciones de DOM.
Netscape solo introdujo el soporte de DOM hasta Netscape 6 (Mozilla 0.6.0). Actualmente, Mozilla tiene el mejor soporte de DOM, que implementa el completo Nivel 1, la mayoría del Nivel 2 y una parte del Nivel 3. (El objetivo del grupo de desarrollo de Mozilla es construir un navegador que sea compatible con el estándar en un 100%, y su trabajo ha sido recompensado.)
Opera solo se unió al soporte de DOM hasta la versión 7.0, y Safari también implementó la mayoría de DOM Nivel 1. Casi todos ellos están al mismo nivel que IE 5.5, y en algunos casos, incluso superan a IE 5.5. Sin embargo, en términos de soporte para DOM, todos los navegadores están mucho más por detrás de Mozilla. La tabla a continuación muestra el soporte de DOM de navegadores comunes.
Navegador | Compatibilidad con DOM |
---|---|
Netscape Navigator 1.0 - 4.x | - |
Netscape 6.0+ (Mozilla 0.6.0+) | Nivel 1, Nivel 2, Nivel 3 (parte) |
IE 2.0 - 4.x | - |
IE 5.0 | Nivel 1 (mínimo) |
IE 5.5+ | Nivel 1 (casi todo) |
Opera 1.0 - 6.0 | - |
Opera 7.0+ | Nivel 1 (casi todo), Nivel 2 (parte) |
Safari 1.0+/Konqueror ~ 2.0+ | Nivel 1 |
Notas:Si desea aprender más sobre el conocimiento de DOM, visite CodeW3C de Tutoriales HTML DOM y Tutoriales XML DOM.
BOM
IE 3.0 y Netscape Navigator 3.0 proporcionaron una característica - BOM (Modelo de Objetos del Navegador), que permite el acceso y la operación de las ventanas del navegador. Al usar BOM, los desarrolladores pueden mover ventanas, cambiar el texto del estado de la barra y realizar otras acciones no directamente relacionadas con el contenido de la página. Lo que hace que BOM sea único y a menudo sospechoso es que es solo una parte de JavaScript, sin ningún estándar relacionado.
El BOM se encarga principalmente de las ventanas y marcos del navegador, aunque generalmente se considera que las extensiones específicas del navegador de JavaScript son parte del BOM. Estas extensiones incluyen:
- Abrir una nueva ventana del navegador
- Mover, cerrar la ventana del navegador y ajustar el tamaño de la ventana
- Objeto que proporciona información detallada sobre el navegador web
- Objeto que proporciona información detallada sobre la resolución de la pantalla del usuario
- Soporte para cookies
- IE extendió BOM, agregando la clase ActiveXObject, que puede instanciar objetos ActiveX mediante JavaScript
Dado que no existe un estándar BOM relacionado, cada navegador tiene su propia implementación de BOM. Algunos estándares de hecho, como tener un objeto ventana y un objeto navegación, pero cada navegador puede definir sus propias propiedades y métodos para estos objetos u otros objetos.
Ver:
- Página anterior Historia de JavaScript
- Página siguiente Sintaxis de ECMAScript