2011年7月20日水曜日

HTML5のpushState

HTML5には、
HistoryオブジェクトにpushState()とreplaceState()というメソッドが追加されました。

pushStateというのは、
Historyのリストに新しくエントリを追加してしまいます。
ページ遷移をしていなにのに、Hisotryが追加されるのです。

下記にコードを示します。
  1. <html>  
  2. <head>  
  3. <script>  
  4. function push_history() {  
  5.   history.pushState("", "", "/example");  
  6. }  
  7. </script>  
  8. </head>  
  9. <body>  
  10. Hello, World!  
  11. <form>  
  12. <input type="button" value="button" onclick="push_history()" />  
  13. </body>  
  14. </html>  

これにより、
現在のページが "http://foo.com/hello/index.html " だった場合、
ボタンをクリックするとURLが第3引数により、"http://foo.com/example" に変化しており、
戻るのリストをみると、1個Historyが追加されているのがわかります。
実際に戻るをクリックすると、URLバーが
"http://foo.com/hello/index.html "
に戻ります。

これで、ページを遷移していないのに、
Historyにエントリを追加して、URLを変更することができます。

Ajaxとこれを組み合わせた技術を "Pjax" と呼びますが、
これは別途まとめようと思います。

0 件のコメント: