私のサイトでは、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
にアクセスする必要があります。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 /'})'のルートとして設定します。 –