4

私は今、物事を完全に混乱させました。Backbone.js 0.9.1 に更新し、スラッシュ ベースの URL に更新して、pushstate:true. 5 日後、IE9 でアプリをテストしましたが、URL がリンク先のページに固執しません。

私はこのようなことをしました:

main.html

<a href="/signup">Do Signup</a>

ブラウザは にmydomain.com/signup1 秒間アクセスした後、URL を指定して main.html に戻りますmydomain.com/#signup

元に戻すとpushstate:true、単純なリンクの問題は解決しますが、ルーターを次のようなルートを持つように定義した場所を分解します...

SignupRouter = Backbone.Router.extend({
  routes: {
    'signup': 'signup',
    'signup/:key': 'confirm'
  }, initialize: function() {
    // do some stuff here
  }, signup: function() {
    // signup view
  }, confirm: function() {
    // confirm view
  }
});

pushstate を使用しない場合は、ページごとに個別のルートを作成し、サーバー側の変数に基づいてルーターをロードするという戦略に戻る必要があります (私が知っている非常に原始的です):

SignupRouter = Backbone.Router.extend({
  initialize: function() {
    // signup view
  }
});

ConfirmSignupRouter = Backbone.Router.extend({
  initialize: function() {
    // confirm view
  }
});

これを行うIEフレンドリーな方法はありますか(IE7〜9)?サーバー側でいくつかの回避策はありますか? なんでも?

4

1 に答える 1

7

pushStateをオフにすると、それをサポートしていないブラウザーで機能する場合は、バックボーンPushStateテストを使用してプリエンプティブにオフにしてみてください(このコードは、バックボーンソースの_hasPushState変数に基づいています)。

// Enable pushState for compatible browsers
var enablePushState = true;  

// Disable for older browsers
var pushState = !!(enablePushState && window.history && window.history.pushState);

Backbone.history.start({ pushState: pushState });
于 2012-02-28T16:11:57.827 に答える