2010-11-06 7 views
12

Sto lavorando al mio portafoglio, rendendolo interamente basato su jQuery. Quindi il mio problema è quando vai su una pagina, poi aggiorna poi ti porterà di nuovo alla home page. Quindi ho due domande, in realtà.Lavorare con siti Web a pagina singola e mantenere lo stato utilizzando un hash URL e jQuery

  1. Come si ottiene (tramite jQuery/Javascript) un "codice hash" dall'URL?
    1. E.G. Voglio che la parte in grassetto di questo: http://portfolio.theadamgaskins.com/Portfolio/#graphicsDesign
  2. Come si fa a cambiare l'URL nella barra degli indirizzi quando si passa a una nuova pagina per contenere il codice hash per quella pagina?
    1. E.G. quando si va alla pagina graphicsDesign, il collegamento nei cambiamenti barra degli indirizzi per http://portfolio.theadamgaskins.com/Portfolio/#graphicsDesign
+2

Si noti inoltre che se si spera per Google per indicizzare le pagine, si può finire con una sola pagina per Google per indicizzare. Quindi per scopi SEO questo è probabilmente un incubo. Soluzione –

+0

: http://www.asual.com/jquery/address/docs/ – tetris

+0

In risposta a Nathan .. Sono d'accordo. Questo creerà contenuti duplicati perché tutte le date sulle tue pagine sono le stesse per i motori di ricerca. Le modifiche alla visualizzazione sono solo su front-end ma Google indicizza tutte! –

risposta

29

Fate il punto di ancoraggio per un collegamento interno in questo modo:

<a href="#graphicsDesign">Graphics</a> 

E poi semplicemente fare jQuery rispondere all'evento click e lasciare che il browser segua il link interno in modo naturale. Il browser dovrebbe ora avere il collegamento interno nella sua barra degli indirizzi. È possibile utilizzare il seguente codice JavaScript per analizzare the URL e quindi caricare la parte corretta del documento HTML. Dovrai scrivere il codice in modo che il contenuto corretto venga caricato in base a quale sia l'indirizzo interno del browser.

if(window.location.hash === "graphicsDesign" || 
window.location.hash === "somethingElse") { 
    loadContent(window.location.hash); 
} 
+0

Tutte le pagine sono contenute in un documento html e jQuery nasconde tutti tranne uno quando viene caricata la pagina. Quindi ho bisogno di ottenere il codice hash in javascript, così posso dire a jQuery quale pagina mostrare. – Entity

+1

Inizia con tutte le div nascoste e lascia che sia – hybernaut

+0

'~ hash ===" graphicsDesign "' dovrebbe avere un hash davanti ad esso in questo modo '~ hash ===" #graphicsDesign "' @ Sam152 –

2

Utilizzare uno dei numerosi plug-in di cronologia disponibili, ad es. qui: http://plugins.jquery.com/project/jquery-history-web-2-0-hashchange-history-remote

+0

Questo è usato di più in modo che puoi collegare qualcun altro e verrà caricato il contenuto giusto, non tanto che potrai navigare avanti e indietro. – Sam152

+0

Inoltre, i pulsanti Indietro e Avanti funzioneranno come previsto e consentiranno alla pagina di ricaricarsi nello stato corretto dopo un aggiornamento –

0

Questo non è il modo in cui i siti Web vengono solitamente creati, quindi in un certo senso si sta nuotando controcorrente. Potrebbe essere sembrato il percorso più breve quando hai iniziato, ma probabilmente scoprirai che devi fare molto più lavoro a seguito della tua decisione iniziale.

Detto questo, assicurarsi di iniziare con tutte le div nascoste e quindi visualizzare quella selezionata.

Consiglio anche plug-in barbecue Cowboy che vi aiuterà a trattare con il tasto posteriore così come di ricarica: http://benalman.com/projects/jquery-bbq-plugin/

Problemi correlati