CoffeeScriptでPjax使ってみた
・Pjax?
pjaxっていうのは、Ajax+(pushState, popState)ですね。
Ajaxでコンテンツを差し替えつつ、URLを動的に変更します。
んでさらに、Ajaxで差し替えてるのに「戻る」、「次へ」ボタンも使えるようになります。
要は履歴を書き変えているらしい、、、、、。(ちゃんと調べておこう)
・使用例
有名なところで行くとgithubがまさにそれらしい。
githubはjquery-pjaxっていうjQueryのプラグインを使用してるらしいです。
ちょうど使えそうな機会があったので、じゃあ触ってみようと思い、
それならCofeeScriptに決まってんだろってことで使ってみました(理由になってないですね)。
なお、今回はプラグインは使いません。
・pushState
window.history.pushState("", "", URL)
簡単。
基本的にはこれで使える。
第1引数はstateのオブジェクトが入るらしい。popStateの時に引っぱり出されるらしいが詳しいことは割愛。
第2引数はまだ未完成らしく、空でOK、
第3引数は変更したいURL
・popState
$(window).bind "popState", -> // contens
こっちも簡単。
popStateイベントをbindするだけ。
「戻る」、「次へ」ボタンで呼び出されます。
・実際使ってみた
// ブラウザが対応してるかチェック if window.history and window.history.pushState $(a Elements).live "click", -> window.history.pushState("", "", this.href) // $.ajax // url: this.href // ¦ return false $(window).bind "popstate", -> // $.ajax // url: location.href // ¦ return false
pushStateもpopStateも履歴を書き変えるだけなので、
あとはそれに応じてajaxでコンテンツを差し替えれば良い感じなのか、、、。
難しい。
nayamagu