私のサイトはBackbone.jsにpushstatesを実装したばかりで、サイト全体が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
アイテムIDの詳細も含まれています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: '/'
})
}
問題:上記のコードでわかるように pushState: false
、互換性のないブラウザの場合は、でプッシュステートを無効にしようとしました。
http://mydomain.com/explore
ただし、IEが通常のブラウザ( )で通常機能するものにアクセスするには、IEにアクセスする必要があり、http://mydomain.com/explore/#explore
混乱を招きます。http://mydomain.com/explore/1234
IEにアクセスするには、さらに多くのことを行う必要がありますhttp://mydomain.com/explore/#explore/1234
これはどのように修正する必要がありますか?