내 사이트가 Backbone.js에서 푸시 스테이트를 구현했으며 IE의 전체 사이트가 중단됩니다. IE의 대체 버전을 어떻게 만들어야합니까?Backbone.js PushStates : Internet Explorer의 폴백이 작동하지 않습니다.
내가
홈페이지 URL을 달성하기 위해 노력하고 무엇 : http://mydomain.com/explore
또 다른 URL : 'http://mydomain.com/explore/1234
사이트의 메인 페이지는 라우터 기능 explore
을 트리거 http://mydomain.com/explore
입니다.
http://mydomain.com/explore/1234
함수
explore
와 동일하지만, 또한 항목 ID
1234
대한 세부 사항을 포함하는 함수
viewListing
를 트리거의 백본 라우터.
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에서 (예상대로) 리디렉션 http://mydomain.com/#'에 // mydomain.com/explore'/explore'. 그러나'http : // mydomain.com'은 앱 페이지가 아닌 환영/스플래시 페이지입니다 ('http : // mydomain.com/explore') – Nyxynyx
그러면 백본 경로에서'/ explore /'를 제거해야 할 것입니다 'Backbone.history.start ({root : '/ explore /'})'의 루트로 설정하십시오. –