2010-12-05 8 views
3

小さな非同期アプリケーションのバックボタンをサポートするために、jQueryアドレスを複数回使用しました。AJAX履歴ボタンをサポートしていません

すべてのAJAX要求が同じことを行う(つまり、ページを非同期で要求し、HTML要素を要求で置き換える)場合、実装は簡単です。

AJAXリクエストが異なる場合、あるケースでオーバーレイを開き、別のケースでページ全体のコンテンツを変更すると、ものが乱雑になるとしましょう。

私はハッシュ値(#/ somepage/someotherpage)を解析するために多くのifステートメントを実行しなければならないという事実のために、いくつかの本当に馬鹿げたコードになりました。

私はいつも自分自身に繰り返しました。これを行うにはより良い方法が必要です。

誰もが同じ問題を抱えていて解決策を提案できますか?

私の考えをチェックし、あなたの考えを教えてください。

私の考えは、window.historyオブジェクトをエミュレートするオブジェクトを作成することですが、AJAXの履歴のみを「ajaxhistory」としましょう。 ページが要求されるたびに非同期的にこのような何かが起こる:

ajaxhistory[i] = { 
    url: 'here the url', 
    type: 'overlay' 
    otherusefulinfo: 'whatever' 
} 
i++ 

ので、例えば:

if(moving back or forward){ 
    if(currenturl == ajaxhistory[i-1].url){ 
     // i'm going back 
     // i'm able to know what type of action i should take thanks to 
     // ajaxhistory[i-1].type and ajaxhistory[i-1].otherusefulinfo 
    } 
} 

私はそれは、読んmantainおよび変更するために私のコードは、はるかに簡単になるだろうので、このアイデアが好き。 新しい機能を追加したいと思う...私は新しいタイプを追加することができます。私はそれを使って作業しますが、通常、私は多くの厄介なif文を編集するべきです。

あなたはどう思いますか?パフォーマンスの観点から問題がありますか?

答えて

1

ベンAlmanすることによって、この作品をチェックしてください

http://benalman.com/projects/jquery-bbq-plugin/

彼はボタンをサポートするバック助けるためのプラグインを持っています。

希望すると便利です。
window.history.pushState({type: 'overlay'}, title, url)、最初のパラメータは、JSオブジェクトです:

ボブは

関連する問題