Como es bien sabido, en las aplicaciones web XHR (también conocido como AJAX) no se construye ningún historial para su aplicación y al hacer clic en el botón de actualización a menudo se mueve al usuario fuera de su actividad actual. Me encontré con location.hash (por ejemplo, http://anywhere/index.html#somehashvalue
) para eludir el problema de actualización (use location.hash para informar a su aplicación de su estado actual y use un controlador de carga de página para restablecer ese estado). Es realmente agradable y simple.Está monitoreando location.hash una solución para el historial en las aplicaciones XHR?
Esto me llevó a pensar en usar location.hash para rastrear el historial de mi aplicación. No quiero usar las bibliotecas existentes, ya que utilizan marcos flotantes, etc Así que aquí está mi níquel y dime: cuando se carga la página de aplicaciones que comienzan este:
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
(AppCache es un objeto predefinido que contiene variables de aplicación) La idea es activar cada acción en la aplicación desde el valor hash. En navegadores decentes, un cambio de valor hash agrega una entrada al historial, en IE (< = 7) no es así. En todos los navegadores, navegar hacia atrás o hacia adelante a una página con otro valor hash no desencadena una actualización de página. Ahí es donde la función intervalled toma el control. Con la función cada vez que se detecta el cambio del valor hash (mediante programación, o haciendo clic atrás o adelante), la aplicación puede tomar las medidas adecuadas. La aplicación puede realizar un seguimiento de su propio historial y debería poder presentar los botones de historial en la aplicación (especialmente para usuarios de IE).
Por lo que yo sé, esto funciona con el navegador cruzado y no hay ningún costo en términos de recursos de memoria o procesador. Entonces mi pregunta es: ¿sería esta una solución viable para administrar la historia en XHR-apps? ¿Cuáles son los pros y los contras?
Actualización: porque uso mi framework homebrew, no quería usar uno de los frameworks existentes. Para poder usar location.hash en IE y tenerlo en su historial también, creé un script simple (sí, necesita un iframe) que puede ser útil para usted. Lo publiqué on my site, no dude en usar/modificar/criticarlo.
Pensé en eso. ¿Quizás la historia abarrotada también es una cuestión de control de aplicaciones, asegurándose de que el usuario termine donde lo lleva la aplicación, por lo que su posición es siempre clara? – KooiInc