7

Backbone.jsページによると:

最近まで、これらのパーマリンクを提供するためにハッシュ フラグメント (#page) が使用されていましたが、History API の登場により、標準の URL (/page) を使用できるようになりました

このルータールールを追加しようとしました:

routes: {
  'test': function() {
     alert('ok'); }
}

と呼ばれるBackbone.history.start({pushState: true, root: '/myroot/'})。私のページには次のようなリンクがあります。

<a href="test">test me</a>

リンクのクリックイベントを次のようにインターセプトしました。

$('a[href=test]').click(function(e) {
  router.navigate('test');
  e.preventDefault(); });

リンクをクリックしても、傍受が成功したと思われるリクエストは行われません。しかし、イベントはトリガーされません。

ですから、これがどのように機能するかを理解するのを手伝ってくださいHistory API。または、私が間違ったことを指摘してください。

4

3 に答える 3

13

pushState を有効にする必要があります。

Backbone.history.start({pushState: true});

リンクはサーバーからの完全な更新を強制するため、サーバーはその URL のコンテンツで応答する必要があります。

そのリンクのクリックを傍受し、ルーターに「テスト」ルートに移動するように指示する必要があります。

myRouter.navigate("test");

HTML5 履歴 API の詳細については、http://diveintohtml5.info/history.html を参照してください

Backbone での pushState の使用に関する入門レベルの情報:

http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-1-introducing-pushstate/

http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone-js/

そして、これらすべてをカバーする私が行ったプレゼンテーションのビデオ:

http://lostechies.com/derickbailey/2011/10/06/seo-and-accessibility-with-html5-pushstate-part-3-the-video/

それが役立つことを願っています。

于 2012-04-25T03:41:13.863 に答える
1

実際にルーティング イベントをトリガーするには、navigate 呼び出しに {trigger: true} を追加する必要があります。

于 2012-10-31T06:17:19.270 に答える
0

アプリケーションで HTML5 pushStateサポートを使用したいことを示すには、 Backbone.history.start({pushState: true}). pushStateを使用したいが、それをネイティブでサポートしていないブラウザーで代わりにページ全体の更新を使用する場合は{hashChange: false}、オプションに追加できます。

PS!アプリケーションがドメインのルート URL から提供されていない場合/は、オプションとして、ルートが実際にどこにあるかを History に伝えてください (そうしないと、ナビゲーションが機能しません!)。

Backbone.history.start({pushState: true, root: "/public/search/"})
于 2016-08-03T07:37:35.680 に答える