HTML 5のpushstate、popstate操作history、現在のurlを更新せずに変更
4630 ワード
一、windowを知っています.history
1、歴史記録の前進と後退
履歴で後退するには、次のようにします.
これは、ユーザーがブラウザの後退ボタンをクリックしたようなものです.
ブラウザで前進ボタンをクリックするように、前進することができます.
2、指定した履歴ポイントに移動
現在のページ位置に対する数値を指定することで、go()メソッドを使用して、現在のセッションの履歴からページをロードできます(現在のページ位置インデックス値は0、前のページは-1、次のページは1).
1ページ後退するには(back()を呼び出すのと同じ):
1ページ前に移動(forward()を呼び出すのと同じ):
同様に、パラメータ「2」を渡すと、2つの記録点を前に移動できます.lengthプロパティ値を表示して、履歴スタックに合計何個のレコードポイントがあるかを知ることができます.
二、履歴点の修正
HTML 5の新しいAPIがwindowを拡張しました.historyは、歴史記録点をさらに開放した.現在の履歴ポイントを格納したり、現在の履歴ポイントを置き換えたり、履歴ポイントをリスニングしたりすることができます.以下、簡単に説明します.
1、現在の履歴ポイントを記憶する
格納方法は、windowで配列のスタック(
PushStateメソッドを実行すると、ページのurlアドレスはhttp://qianduanblog.com/post-1.html.
2、現在の履歴ポイントを置換する
3、傍受履歴ポイント
リスニング履歴ポイントは、直感的にリスニングURLの変化と考えられるが、URLのhash部分は無視され、リスニングURLのhash部分、HTML 5には
javascriptスクリプト実行
もう一つ注意したいのは、グーグルブラウザと火狐ブラウザがページで初めて開いた反応が異なることです.グーグルブラウザは
window.history
はwindowオブジェクトの履歴を表し、ユーザがアクティブに生成しjavascriptスクリプト制御を受けるグローバルオブジェクトである.Windowsオブジェクトは、history
オブジェクトを介して、ビューア履歴へのアクセスを提供します.非常に有用な方法と属性を暴露し、履歴の中で自由に前進し、後退させます.1、歴史記録の前進と後退
履歴で後退するには、次のようにします.
1 window.history.back();
これは、ユーザーがブラウザの後退ボタンをクリックしたようなものです.
ブラウザで前進ボタンをクリックするように、前進することができます.
1 window.history.forward();
2、指定した履歴ポイントに移動
現在のページ位置に対する数値を指定することで、go()メソッドを使用して、現在のセッションの履歴からページをロードできます(現在のページ位置インデックス値は0、前のページは-1、次のページは1).
1ページ後退するには(back()を呼び出すのと同じ):
1 window.history.go(-1);
1ページ前に移動(forward()を呼び出すのと同じ):
1 window.history.go(1);
同様に、パラメータ「2」を渡すと、2つの記録点を前に移動できます.lengthプロパティ値を表示して、履歴スタックに合計何個のレコードポイントがあるかを知ることができます.
1 window.history.length;
二、履歴点の修正
HTML 5の新しいAPIがwindowを拡張しました.historyは、歴史記録点をさらに開放した.現在の履歴ポイントを格納したり、現在の履歴ポイントを置き換えたり、履歴ポイントをリスニングしたりすることができます.以下、簡単に説明します.
1、現在の履歴ポイントを記憶する
格納方法は、windowで配列のスタック(
Array.push()
)に似ている.historyには、次のような履歴ポイントが追加されています.1 // url :http://qianduanblog.com/index.html
2 var json={time:new Date().getTime()};
3 // @ : ,
4 // @ :
5 // @ url: url , url,url ,
6 window.history.pushState(json,"","http://qianduanblog.com/post-1.html");
PushStateメソッドを実行すると、ページのurlアドレスはhttp://qianduanblog.com/post-1.html.
2、現在の履歴ポイントを置換する
window.history.replaceState
とwindow.history.pushState
は類似しており、異なる点はreplaceState
がwindow.history
に履歴点を追加しないことであり、その効果はwindow.location.replace(url)
に類似しており、いずれも履歴点に記録点を追加しないことである.ユーザーのいくつかの操作に応答するために、現在の履歴エントリのステータスオブジェクトまたはURLを更新する場合は、replaceState()
メソッドを使用すると特に適しています.3、傍受履歴ポイント
リスニング履歴ポイントは、直感的にリスニングURLの変化と考えられるが、URLのhash部分は無視され、リスニングURLのhash部分、HTML 5には
onhashchange
という新しいAPIがあり、私のブログではこの方法とブラウザ間の互換性ソリューションについても述べている.urlの変化は、window.onpopstate
によって傍受することができ、履歴記録ポイントに格納された状態オブジェクト、すなわち、上述したjsonオブジェクト、例えば、以下のような状態オブジェクトを取得することができる. 1 // url :http://qianduanblog.com/post-1.html
2 window.onpopstate=function()
3 {
4 // json
5 var json=window.history.state;
6 // :http://qianduanblog.com/index.html
7 // json null
8 // :http://qianduanblog.com/post-1.html
9 // json {time:1369647895656}
10 }
javascriptスクリプト実行
window.history.pushState
およびwindow.history.replaceState
は、onpopstate
イベントをトリガーしません.もう一つ注意したいのは、グーグルブラウザと火狐ブラウザがページで初めて開いた反応が異なることです.グーグルブラウザは
onpopstate
事件をトリガーしますが、火狐ブラウザはしません.