1

バックボーン ルーティングを処理しているときに、特有の問題に遭遇しました。

私たちのアプリは でホストされexample.com/photo/index.phpており、トリガーされたときにアドレスバーに として表示されるイベントをフックしたいと考えていますexample.com/photo/<ID>。以下は、書き換えルールとルーター設定をセットアップする方法です。

RewriteRule ^/photo/([0-9]+)?$ /photo/index.php/photo/$1 [L]

Backbone.Router.extend の内部:

routes: {
    'photo/:ID': 'viewPhoto'
},

ルーターがインスタンス化された後:

$(function() {
    Backbone.history.start({
        pushState: 'pushState' in window.history,
        root: '/'
    });
});

これは Firefox/Chrome/Safari ではうまく機能しますが、IE9 では でイベント フックにアクセスする必要がありexample.com/photo/#photo/<ID>、あまりクールではありません。

そのため、 () の pushState オプションを切り替えてみpushState: trueて、それが役立つことを願っていexample.com/photo/<ID>ますが、IE9 でアクセスするたびに、代わりにページがリダイレクトされexample.com/#photo/<ID>、実際には のコンテンツが表示されexample.com/index.phpます。

多分(?) イベントフックのURLを のように変更すれば問題ないのですがexample.com/photo/view/<ID>、その部分には触れられません。

pushState の有無にかかわらず、 、 、または IE9 で期待どおりに動作さexample.com/photo/<ID>せるexample.com/#photo/<ID>方法はありますか?example.com/photo/#<ID>

4

0 に答える 0