我的网站刚刚在 Backbone.js 中实现了 pushstates,整个网站都因 IE 而中断。我应该如何为 IE 创建后备?
我想要达到的目标
主要网址:http://mydomain.com/explore
另一个网址:'http://mydomain.com/explore/1234
该站点的主页是http://mydomain.com/explore
触发路由器功能的explore
。
当用户访问http://mydomain.com/explore/1234
时,Backbone 的路由器会触发该函数viewListing
,该函数与函数相同explore
,但还包括 item 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
正如您在上面的代码中看到的,如果它是不兼容的浏览器,我尝试禁用推送状态 。
但是,对于 IE 来说,要访问正常浏览器 ( ) 正常工作的内容http://mydomain.com/explore
,IE 将需要访问http://mydomain.com/explore/#explore
这让事情变得混乱!更多访问http://mydomain.com/explore/1234
IE需要去http://mydomain.com/explore/#explore/1234
这应该如何解决?