2012-12-05 9 views
6

Sto utilizzando il router Backbone.js per attivare determinati metodi di inizializzazione quando l'utente raggiunge determinate route URL. Quindi andare a /posts/1 tramite un tag di ancoraggio alla vaniglia dovrebbe attivare qualsiasi richiamata associata a /posts/:id nel mio router Backbone. Funziona perfettamente con i browser moderni quando è impostato Backbone.history.start({ pushState : true }). Tuttavia, in IE, gli utenti che tentano di raggiungere /posts/1 verranno reindirizzati a /#posts/1, che è solo la mia home page con una stringa hash priva di significato.Backbone Router in IE

Per essere chiari, non ho bisogno di pushState. Non sto cercando di inviare gli URL alla cronologia del browser per gli URL. Sto solo cercando di leggerli, quindi lanciamo una richiamata, che dovrebbe essere possibile in qualsiasi browser.

Sembra semplice funzionalità ma sono perplesso.

Grazie!

+0

Hai bisogno del tuo server per rispondere all'URL/post/1 ed è considerata una pagina diversa per la tua app? Potresti semplicemente tirare giù le informazioni sul post in un XHR e visualizzarlo sulla pagina? – MrGrigg

+0

Penso che sia necessario inserire del codice - è un po 'difficile dire cosa intendi. Il reindirizzamento al frammento di URL è un comportamento di fallback normale per i browser che non supportano lo stato di push. Stai dicendo che il percorso non viene colpito correttamente in questi casi? – McGarnagle

risposta

7

Posso rispondere alla mia domanda qui. Il tipo di funzionalità di cui avevo bisogno qui potrebbe essere raggiunto nel modo seguente:

+0

stai davvero andando in produzione con quello "// spezzerà la nostra merda". commento? LOL! troppo divertente. comunque, felice che tu l'abbia capito. –

+2

La mia build di produzione elimina tutti i commenti. – Squirkle

0

questo ha funzionato per me: Backbone.history.start ({radice: '/ my_app_dir_here /'});

0

Se non si cura di carichi di pagina Ajax nei browser che non supportano pushState, utilizzare l'opzione {hashChange: false}. Ciò causerà un forte caricamento della pagina ogni volta che un percorso cambia.

ad es.

Backbone.history.start({ pushState: true, hashChange:false });

Dalla documentazione Backbone.js:

Se vuoi utilizzare pushState, ma hanno i browser che non supportano nativamente utilizzare piena pagina viene aggiornata, invece, è possibile aggiungere {hashChange: false} per le opzioni.

+1

Si noti che la risposta accettata sopra si applica a un problema in una versione Backbone che ha più di due anni. Il problema sopra non esiste più. – Squirkle