Casi donde quiera que vaya en línea en estos días, utilizará una página web con cierto nivel de inteligencia detrás de ella.

Puede ser algo tan simple como registrar el hecho de que está viendo la página, puede estar rastreando sus gustos y aversiones, o puede proporcionar una animación para hacer que la experiencia de ver la página sea mejor y más interactiva..

No importa lo que suceda debajo del capó, es muy probable que el código JavaScript esté haciendo el trabajo..

Proyecto Mocha

En 1995, Netscape contrató a Brendan Eich, y luego a MicroUnity Systems Engineering, para ayudar con un nuevo proyecto llamado Mocha para la próxima versión del navegador Netscape Navigator. Sun Microsystems solo había lanzado recientemente applets de Java (pequeños programas que podían ejecutarse en un navegador), pero necesitaba algún tipo de "código de cola" para que el navegador les permitiera ejecutarse..

Eich decidió que un lenguaje de script simple sería la respuesta. Optó por la simplicidad, porque se dio cuenta de que con toda probabilidad no iba a ser programadores creando una página web con applets de Java, sino diseñadores web. Esos diseñadores usarían applets de Java como cajas negras que necesitarían para vincularse fácilmente a la página.

Comenzó a trabajar en un lenguaje interpretado vagamente escrito que eventualmente llamó LiveScript. Dado que sus usuarios previstos no eran programadores, evitó las sutilezas de desarrollo estándar como los compiladores y un sistema formal orientado a objetos, e hizo que el lenguaje perdonara errores menores que un lenguaje más formal señalaría como errores y se negaría a ejecutar..

También agregó enlaces para el código escrito en el idioma para interactuar con el código HTML de la página para que los diseñadores puedan manipular formularios, imágenes y similares..

Justo antes de que Sun Microsystems y Netscape anunciaran el nuevo idioma en diciembre de 1995, se le cambió el nombre a "JavaScript" en un intento de marketing para enfatizar más que su propósito era alojar applets de Java. Esto fue, por decirlo suavemente, desastroso: JavaScript no es Java y, aparte de algunas semejanzas sintácticas superficiales, no funciona como Java.

Esta decisión de nomenclatura ha generado más problemas para los programadores que para cualquier otro, porque tienen la expectativa de que 'Java' en JavaScript significa el Java que están acostumbrados a usar en el lado del servidor. La decisión también fue un desastre porque los diseñadores web y los programadores ignoraron los applets de Java, y en su lugar usaron JavaScript para manipular los elementos de la página (y debe decirse, en los primeros días se trataba principalmente de intercambio de imágenes: el motor de renderización en el antiguo los navegadores no estaban a la altura de la tarea de renderizar elementos dinámicos rápidamente).

Dado que no había necesidad de un compilador, junto con el hecho de que podía copiar y pegar scripts de otros sitios en el suyo sin prácticamente cambios, y que probar un script era tan fácil (simplemente cargar la página, esencialmente) significaba que JavaScript despegó a un grado asombroso.

Los programadores "reales" lo descartaron como un juguete al principio, el ZX81 de la web, pero pronto se convirtió en algo omnipresente, especialmente una vez que Microsoft entró al juego..

Microsoft vadea en

La respuesta de Microsoft fue típica de la época: lanzó un lenguaje de scripting basado en Visual Basic llamado VBScript. Estaba fuertemente ligado a Internet Explorer, y a Windows.

Como no era del gusto de todos (en ese momento, Netscape Navigator estaba ganando las guerras de los navegadores), Microsoft presentó su propia versión de JavaScript, llamada, por razones de marcas registradas, JScript. JavaScript era una marca comercial de Sun Microsystems en ese momento y ahora es propiedad de Oracle Corporation.

El problema era que Netscape controlaba el espacio del navegador y era conocido por introducir nuevas funciones y opciones de forma rápida y asertiva. A partir de esa era, tenemos el propio JavaScript, así como las cookies, los marcos y el marcado HTML mal pensado (¿quién podría olvidar el atributo 'parpadear'?).

Hasta IE3, Microsoft estaba recuperándose en el espacio de JavaScript. Finalmente, con el impulso de los usuarios de IE3, Netscape y Sun se vieron obligados a buscar la ayuda de la Asociación Europea de Fabricantes de Computadoras (ECMA) para estandarizar el lenguaje, por lo que los desarrolladores y diseñadores web tendrían alguna esperanza de escribir código y ejecutarlo sin cambios en Los dos grandes navegadores. Eso llevó a la norma ECMAScript en 1997 (la tercera versión de la cual, publicada en 1999, duró unos 10 años). Sí, JavaScript también se conoce como ECMAScript.

HTML dinámico

El siguiente problema que afectó a JavaScript y al espacio del navegador fue el HTML dinámico (DHTML) y el Modelo de objetos de documento, o DOM.

Cuando Netscape y Microsoft lanzaron la versión 4.0 de sus respectivos navegadores, agregaron un mejor acceso a los atributos y elementos de una página web. Este acceso se realizó a través de una biblioteca conocida como DOM, una estructura de datos de árbol jerárquico que representaba la página web como un conjunto de objetos, donde algunos son hermanos para otros y otros son hijos (o alternativamente, padres) para otros elementos..

La figura anterior muestra un documento HTML simple representado como un árbol DOM. En esto, puedes ver que los elementos 'cabeza' y 'cuerpo' son hermanos, mientras que el elemento 'h1' es un hijo de 'cuerpo' (y, por lo tanto, 'cuerpo' es el padre de 'h1'). Los nodos de texto en la parte inferior también forman parte del DOM, aunque no exactamente como elementos HTML.

Desafortunadamente, aunque las ideas generales sobre la jerarquía y los nombres de los elementos del DOM eran comunes en IE y Navigator, Microsoft y Netscape diferían en la forma en que se debía acceder a los atributos de los elementos. Aunque ahora todos estaban bastante de acuerdo en cómo funcionaba el lenguaje de secuencias de comandos, usarlo con DHTML demostró ser una pesadilla, una que todavía sigue presente..

Cualquiera que haya escrito un código de JavaScript en varios navegadores conoce las extrañas rutas de incompatibilidad entre el DOM de los navegadores. Cuando salieron Internet Explorer y Netscape 4.0, pronto podrían obtener bibliotecas que intentaron hacer que Netscape actuara como IE y viceversa..

Otros desarrolladores lanzaron bibliotecas que encapsularon los puntos en común entre los DOM, aunque eso generalmente significaba abandonar algunas de las mejores partes de cada DOM. Esta división entre los DOM llevó a sitios que funcionaron bien en un navegador y menos en el otro..

Las guerras de los navegadores se intensificaron a medida que Microsoft, Netscape y otros, junto con el cuerpo de estándares web, el W3C, intentaron estandarizar los DOM. El proceso fue largo y, de manera lenta pero segura, el Internet Explorer de Microsoft se convirtió en el navegador preeminente.

Dado que IE se entregó como parte de Windows, también condujo a las pruebas de monopolio contra Microsoft y al aumento de Mozilla y otros navegadores como Firefox y Opera. El propio JavaScript se mantuvo bastante constante a lo largo de este período de consolidación y consolidación, ya que la tercera edición de ECMAScript (que todos usaban) resultó ser muy estable..

Hubo muchas esperanzas en la cuarta versión de JavaScript, incluido un modelo de clase orientado a objetos "adecuado", pero al final los planes resultaron demasiado ambiciosos y se abandonaron para una quinta edición más simple, ECMAScript 5, que se está integrando en el intérpretes de los navegadores (Firefox 4 e IE9 son compatibles con ECMAScript 5).