2012-01-26 15 views
2

バックボーンルータを使用している場合、「ページ」ルートが#pageとして扱われます。#とBackbone.jsルータを使用してください!

私は#を作ることができます! #の代わりにデフォルトで?

私はHTML 4ブラウザで#を使用したいと考えています! (http://example.com/#!/page/subpage)、html5履歴を持つブラウザでは、 "!page"をルートとして使用せずにhttp://example.com/page/subpageのような通常のアドレスを使用します。

"#!" ajaxページをクロール可能にすることです。詳細については、http://code.google.com/web/ajaxcrawling/を参照してください。 Backbone.Historyモジュールが使用するハッシュタグがハードでコーディングされているようBACKBONE.JSソースを見た後、それが見えます

答えて

-2

私は、次のアプローチを使用するdediced:

//Create the Route without routes (just the functions) 
App.Router = Backbone.Router.extend({ 
    "quem-somos": function() { 
     alert("quem-somos"); 
    } 
}); 
//test for html5 history using Modernizr and instantiate the Route with normal urls for true and prefixed routes for false 
if(Modernizr.history){ 
    App.routePrefix=""; 
    App.router = new App.Router({ 
     routes:{ 
      "quem-somos" : "quem-somos" 
     } 
    }); 
}else{ 
    App.routePrefix="!/"; 
    App.router = new App.Router({ 
     routes:{ 
      "!/quem-somos" : "quem-somos" 
     } 
    }); 
} 
Backbone.history.start({pushState: true}); 
//Call navigate when clicking a button 
    App.router.navigate(App.routePrefix+"quem-somos",{trigger: true, replace: true}); 

私は、各ブラウザのサポートのためのhttp://example.com/quem-somoshttp://example.com/#!/quem-somosを得るこの方法を。

0

これを変更する最も簡単な方法は、ライン741(バックボーンに、ソース自体を変更することです0.5.3):

var hashStrip = /^#*/; 

は、次のように変更します。

var hashStrip = /^#!*/; 

ます。また01内navigate機能を変更する必要がありますを確認して "!"表示されます。ライン863上:原因それはBACKBONE.JSで書かれていたかを、私は修正するために、よりエレガントな方法があるかわからない、

残念ながら
window.location.hash = this.fragment = "!" + frag; 

window.location.hash = this.fragment = frag; 

に変更する必要がありますこの。

+0

回答ありがとうございました。今、バックボーンは#!アドレスから、ただしmyRoute.navigate( "page"、true)を使用している場合。 urlフラグメントは#!の代わりに#として表示されます。 –

+0

ああ良いキャッチ。残念ながら、これはBackbone.jsソースの別の編集を行います。私はその変化に私の答えを更新します。 –

2

あなたは自分のルートに!/を追加することができます。

routes: { 
    "!/help":     "help", // #!/help 
    "!/page/:subpage":  "search", // #!/search/kiwis 
    "!/page/:subpage/p:page": "search" // #!/search/kiwis/p7 
}, 

その後、あなたは完全なhttp://example.com/#!/page/subpage URLを取得します。

+0

おっと、私はちょうどあなたの全体の質問を読んで、プッシュ状態のためにルートを変更したくないことに気づいたと思います。それについて申し訳ありません!この答えを残しておくと、他の誰かが道を救うのに役立ちます。 – swatkins

+0

これも動作しますが、myRoute.navigate( "page"、true)を使用すると、kpeelの答えと似ています。 urlフラグメントは#!の代わりに#として表示されます。 –

+0

さて、はい、あなたは完全ルートを渡す必要があるので、 'myRoute.navigate("!/ page "、true);' – swatkins

関連する問題