Sono un po 'confuso su come funziona History.js al caricamento della pagina. Ho fatto alcuni esperimenti ma i risultati sembrano indeterministici.History.js getState() a pageload
Il mio sito Web è un motore di ricerca e la query è memorizzata nei parametri URL: ?Query=cats
. Il sito è scritto esclusivamente in javascript. History.js funziona alla grande quando faccio una nuova ricerca, la nuova query viene aggiornata e lo stato viene premuto.
Il mio problema è come creare uno stato iniziale se l'utente inserisce manualmente un URL che include un parametro Query
. Ogni modo in cui cerco di farlo finisce con il risultato di eseguire la query di ricerca due volte, in alcuni casi. I due casi d'uso che sembrano essere in conflitto sono:
- L'utente immette manualmente l'URL (
mydomain.com?Query=cats
) nella barra degli indirizzi e preme Invio. - utente passa a una pagina esterna, e quindi fa clic sul pulsante Indietro
In entrambi i casi, i carichi javascript, e quindi guarda ai parametri URL per generare uno stato iniziale.
Tuttavia, nel secondo caso, History.js attiverà l'evento statechange e.
codice necessario:
History.Adapter.bind(window,'statechange',function() { // Note: We are using statechange instead of popstate
var s = History.getState();
if(s.data["Query"]){
executeQuery(s.data);
}
});
e $ (document) .ready ho
// Get history from URL
s = getQueryObjectFromUrl(location.href);
if(s["Query"]){
History.pushState(s,'',$.param(s))
}
Esiste un modo migliore per gestire la creazione di uno stato iniziale di parametri URL?
Perché non dai i risultati degli utenti, ad es. PHP quando va in /? Query = dasd direttamente? –
E per le applicazioni lato client? realpage.html/dynamicAppState viene prelevato dal server come una directory che non esiste costringendoti a riscrivere o htaccess e la pagina corretta non viene mai caricata. Non dovresti aver bisogno di scrivere alcun codice server per farlo funzionare ... è una utility lato client. Quando si usa #, index.html viene caricato e i dati dopo # possono essere facilmente analizzati. Cosa fai adesso? –