Мой сайт только что реализовал pushstates в Backbone.js, и весь сайт ломается для IE. Как создать запасной вариант для IE?
Чего я пытаюсь достичь
Основной URL: http://mydomain.com/explore
Другой URL: 'http://mydomain.com/explore/1234
Главная страница сайта — http://mydomain.com/explore
, которая запускает функцию роутера explore
.
Когда пользователь посещает http://mydomain.com/explore/1234
, маршрутизатор Backbone запускает функцию viewListing
, которая аналогична функции explore
, но также включает сведения об идентификаторе элемента 1234
.
Маршрутизатор Backbone.js
// 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: '/'
})
}
Проблема. Как видно из приведенного выше кода, я пытался отключить pushstates с помощью pushState: false
, если это несовместимый браузер.
Однако для того, чтобы IE мог получить доступ к тому, что обычно работает в обычном браузере (http://mydomain.com/explore
), IE необходимо перейти к http://mydomain.com/explore/#explore
, что сбивает с толку! Кроме того, для доступа к http://mydomain.com/explore/1234
IE необходимо перейти к http://mydomain.com/explore/#explore/1234
Как это исправить?