我的網站剛剛在Backbone.js中實現了pushstates,並且整個網站都停止了IE。我應該如何爲IE創建一個回退?Backbone.js PushStates:Internet Explorer不能正常工作
我想實現
主要網址:http://mydomain.com/explore
另一個網址:'http://mydomain.com/explore/1234
該網站的主頁是http://mydomain.com/explore
觸發路由器功能explore
。
當用戶訪問http://mydomain.com/explore/1234
,骨幹路由器將觸發功能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
禁用pushstates如果它是不兼容的瀏覽器。
但是,IE瀏覽器訪問正常的瀏覽器(http://mydomain.com/explore
)通常工作,IE瀏覽器將需要去http://mydomain.com/explore/#explore
這是讓事情混亂!更多訪問http://mydomain.com/explore/1234
IE需要去http://mydomain.com/explore/#explore/1234
這應該如何解決?
由於設定爲根,我嘗試這樣做,它重定向(如預期)從'的http:// mydomain.com/explore'到'http://mydomain.com/#/explore'。然而,'http:// mydomain.com'是歡迎/啓動頁面,而不是應用程序頁面('http:// mydomain.com/explore') – Nyxynyx
然後你可能不得不從你的Backbone路線中刪除'/ explore /' ,將其設置爲Backbone.history.start({root:'/ explore /'})'中的根。 –