Trang web của tôi vừa triển khai pushstates trong Backbone.js và toàn bộ trang web bị ngắt đối với IE. Tôi nên tạo một dự phòng cho IE như thế nào?Backbone.js PushStates: Dự phòng Internet Explorer không hoạt động
Những gì tôi đang cố gắng để đạt
URL chính: http://mydomain.com/explore
Một URL: 'http://mydomain.com/explore/1234
Các trang chính của trang web này là http://mydomain.com/explore
mà gây nên các chức năng định tuyến explore
.
Khi người dùng truy cập http://mydomain.com/explore/1234
, bộ định tuyến của Backbone sẽ kích hoạt chức năng viewListing
, giống như chức năng explore
, nhưng cũng bao gồm chi tiết cho id mục 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: '/'
})
}
Vấn đề: Như bạn có thể thấy trong đoạn mã trên, tôi đã cố gắng để vô hiệu hóa pushstates với pushState: false
nếu nó là một trình duyệt không tương thích.
Tuy nhiên, để IE truy cập vào những gì bình thường sẽ hoạt động đối với trình duyệt thông thường (http://mydomain.com/explore
), IE sẽ cần phải truy cập http://mydomain.com/explore/#explore
, điều này khiến mọi thứ trở nên khó hiểu! Hơn nữa để truy cập http://mydomain.com/explore/1234
IE cần phải truy cập http://mydomain.com/explore/#explore/1234
Điều này nên được khắc phục như thế nào?
Cảm ơn, tôi đã thử điều này và chuyển hướng (như mong đợi) từ 'http: // mydomain.com/explore' đến' http://mydomain.com/#/khám phá'. Tuy nhiên 'http: // mydomain.com' là trang chào đón/giật gân và không phải là trang ứng dụng (' http: // mydomain.com/explore') – Nyxynyx
Sau đó, bạn có thể phải xóa '/ explore /' khỏi các tuyến đường Backbone của mình , đặt nó làm gốc trong 'Backbone.history.start ({root: '/ explore /'})'. –