Il mio sito ha appena implementato i pushstates in Backbone.js e le interruzioni dell'intero sito per IE. Come dovrei creare un fallback per IE?Backbone.js PushStates: Fallback per Internet Explorer non funziona
Quello che sto cercando di realizzare
URL principale: http://mydomain.com/explore
un altro URL: 'http://mydomain.com/explore/1234
La pagina principale del sito è http://mydomain.com/explore
che attiva la funzione di router explore
.
Quando un utente visita http://mydomain.com/explore/1234
, router di dorsale si innescherà la funzione viewListing
, che è la stessa come la funzione explore
, ma comprende anche dettagli per oggetto id 1234
.
Backbone.js Router
// Router
var AppRouter = Backbone.Router.extend({
routes: {
'explore': 'explore',
'explore/:id': 'viewListing',
},
explore: function() {
this.listingList = new ListingCollection();
// More code here
},
viewListing: function(listing_id) {
this.featuredListingId = listing_id; // Sent along with fetch() in this.explore()
this.explore();
}
});
App = new AppRouter();
// Enable pushState for compatible browsers
var enablePushState = true;
// Disable for older browsers (IE8, IE9 etc)
var pushState = !!(enablePushState && window.history && window.history.pushState);
if(pushState) {
Backbone.history.start({
pushState: true,
root: '/'
})
} else {
Backbone.history.start({
pushState: false,
root: '/'
})
}
Problema: Come si può vedere nel codice di cui sopra, ho provato a disabilitare pushstates con pushState: false
se si tratta di un browser compatibile.
Tuttavia per IE accedere a ciò che normalmente funzionerebbe per un normale browser (http://mydomain.com/explore
), IE dovrà andare a http://mydomain.com/explore/#explore
che sta rendendo le cose confuse! Ulteriore più per accedere a http://mydomain.com/explore/1234
IE deve andare a http://mydomain.com/explore/#explore/1234
Come dovrebbe essere risolto?
Grazie, ho provato questo e reindirizza (come previsto) da 'http: // mydomain.com/explore' a' http://mydomain.com/#/explore'. Tuttavia 'http: // mydomain.com' è la pagina di benvenuto/splash e non la pagina dell'app (' http: // mydomain.com/explore') – Nyxynyx
Quindi probabilmente devi rimuovere '/ explore /' dalle tue rotte Backbone , impostalo come root in 'Backbone.history.start ({root: '/ explore /'})'. –