# Hijax

Hijax es una metodología que deriva de AJAX. Concretamente, se le llama 'Hijax' a la aplicación de una mejora progresiva a nuestro sitio web usando la tecnología AJAX. Mucha gente prefiere llamarlo 'Ajax Simplificado'. Esto permite el uso de AJAX para mejorar la usabilidad y el tiempo de respuesta, sin afectar negativamente a la accesibilidad, además de ayudar a hacer un código de calidad desde el lado del servidor. A esta metodología se la llama Hijax porque hay una página HTML estándar debajo, pero la comunicación normal con el servidor es 'secuestrada' y redirigida para ser procesada por AJAX.

## Historia

Ajax ha revolucionado la web creando una experiencia de usuario mucho mejor. Los días de larga espera para pasar de una página a otra acabaron. Con Ajax, solamente cambia el contenido deseado con un tiempo mínimo, consumiendo menos recursos del servidor y reduciendo drásticamente el ancho de banda usado.
Aun así, era incapaz de guardar las distintas páginas en el historial del navegador o de añadir a favoritos, ya que Ajax no produce cambios en la URL. Después, llegó el concepto de URL Hashing, y el problema se solucionó. Pero todavía quedaba un problema importante: los web crawlers tenían grandes dificultades para rastrear el contenido de las páginas basadas en Ajax, haciendo la optimización para buscadores bastante negativa. Google implementó el concepto de 'hashbang' para solucionar esta dificultad. (El símbolo de exclamación (!) se coloca justo después del símbolo del 'hash' (#), siguiendo el formato www.example.com/#!newcontent. Pero no todos los motores de búsqueda han implementado esto, así que AJAX sigue siendo un reto para el SEO.
Todos estos problemas podrían ser solucionados usando nuevas técnicas, pero el mayor problema de cara a AJAX es la retrocompatibilidad. Para dispositivos que no soportan JavaScript, o que simplemente lo tienen desactivado, o que no soportan el objeto XMLHttpRequest (XHR), AJAX no sólo resulta inútil, sino que además el contenido no es accesible. Por este motivo, AJAX ha recibido fuertes críticas.

## Qué es hijaxing

Sin AJAX, los hipervínculos obligan al navegador a cargar una página nueva, teniendo que cargar de nuevo todos los elementos que habían anteriormente (cabecera, CSS, menús, imágenes, etc). Con AJAX, solamente se actualizan los elementos deseados de la página web, y a excepción del segmento del hash del URL, todo lo demás permanece igual.
Hijax viene a ser un híbrido. Hace uso de una API que conecta cada link con un elemento concreto del DOM. Cuando un link o un formulario recibe el evento 'click', se puede apreciar que el navegador comienza a cargar contenido y que el documento se modifica actualizando también la URL, pero permaneciendo el resto del contenido intacto. Sin embargo, en ausencia de JavaScript la URL del link/formulario todavía apunta a la página con el nuevo contenido, por lo que se puede acceder igualmente (también se aplica a dispositivos móviles y motores de búsqueda, mejorando nuestra posición en buscadores).
Esto es un claro ejemplo de código degradable, y su implementación sigue una mejora progresiva.

## Implementación

La implementación del Hijaxing es simple:
* Se diseña y maqueta correctamente el sitio y todas sus páginas
* Se añade la funcionalidad a los links y los formularios con una fuerte programación del lado del servidor con lenguajes como PHP, ASP.NET, Ruby, etc.
* Una vez comprobado que la navegación tradicional funciona sin problemas, se procede a implementar AJAX con técnicas de JavaScript no obstructivo, separando el comportamiento del contenido, y se programan todas las mejoras de navegación asíncronas deseadas
Realizando estos pasos correctamente, se consiguen sitios web accesibles, rápidos, fácilmente navegables, y rastreables por los robots de los buscadores web, y se mantiene la compatibilidad con dispositivos o clientes sin JavaScript.