Come è noto, nelle applicazioni Web XHR (ovvero AJAX) non viene creata alcuna cronologia per la tua app e facendo clic sul pulsante di aggiornamento spesso l'utente esce dalla sua attività corrente. Mi sono imbattuto in location.hash (ad esempio http://anywhere/index.html#somehashvalue
) per aggirare il problema di aggiornamento (usa location.hash per informare l'app dello stato corrente e utilizzare un gestore di caricamento della pagina per reimpostare tale stato). È davvero bello e sempliceSta monitorando location.hash una soluzione per la cronologia nelle app XHR?
Questo mi ha portato a pensare all'utilizzo di location.hash per tracciare la cronologia della mia app. Non voglio utilizzare le librerie esistenti, perché utilizzano iframe ecc Quindi, ecco la mia nickel e dime: quando la pagina viene caricata applicazione comincio questo:
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 è un oggetto predefinito che contiene le variabili di applicazione) L'idea è di attivare ogni azione nell'applicazione dal valore hash. Nei browser decenti, una modifica del valore hash aggiunge una voce alla cronologia, in IE (= 7) no. In tutti i browser, la navigazione indietro o avanti verso una pagina con un altro valore hash non attiva l'aggiornamento della pagina. Ecco dove subentra la funzione intervallata. Con la funzione ogni volta che viene rilevata la modifica del valore hash (a livello di programmazione o facendo clic su Avanti o Indietro), l'app può intraprendere le azioni appropriate. L'applicazione può tenere traccia della propria cronologia e dovrei essere in grado di presentare pulsanti di cronologia nell'applicazione (specialmente per gli utenti di IE).
Per quanto ne so, funziona su browser incrociato e non ci sono costi in termini di memoria o risorse del processore. Quindi la mia domanda è: sarebbe una soluzione valida per gestire la cronologia delle app XHR? Quali sono i pro e i contro?
Aggiornamento: poiché utilizzo il mio framework homebrew, non volevo utilizzare uno dei framework esistenti. Per poter usare location.hash in IE e averlo nella sua storia, ho creato un semplice script (sì, ha bisogno di un iframe) che potrebbe esserti utile. L'ho pubblicato on my site, sentitevi liberi di usarlo/modificarlo/criticarlo.
Ci ho pensato. Forse la cronologia del disordine è anche una questione di controllo dell'applicazione - assicurandosi che l'utente finisca dove l'app lo conduce, quindi la sua posizione è sempre chiara? – KooiInc