HTML5のプッシュステートとポップステートの操作履歴を詳しく説明し、更新せずに現在のURLを変更するコード例

黄舟
リリース: 2017-03-16 16:25:16
オリジナル
1633 人が閲覧しました

この記事では主にHTML5のpushstateとpopstateの操作履歴と、更新せずに現在のURLを変更することに関する関連情報を紹介します

1. window.historyを理解する

window.history 表現window オブジェクトの履歴レコードは、ユーザーによってアクティブに生成され、javascriptスクリプトによって制御されるグローバル オブジェクトです。 window オブジェクトは、history オブジェクトを介してブラウザ履歴へのアクセスを提供します。いくつかの非常に便利なメソッドとプロパティを公開しており、履歴を自由に前後に移動できるようになります。

1. 履歴の前後方向

履歴に戻るには、次のようにすることができます:


window.history.back();
ログイン後にコピー

これは、ユーザーがブラウザの戻るボタンをクリックするのと同じです。

同様に、ブラウザで次のように進むボタンをクリックするのと同じように、次のように進むことができます:


window.history.forward();
ログイン後にコピー

2. 現在のページ位置を基準とした相対値を指定して、指定された履歴ポイント

に移動します。 , go() メソッドを使用すると、現在のセッションの履歴からページを読み込むことができます (現在のページ位置

indexの値は 0、前のページは -1、次のページは 1)。

1ページ戻る(back()の呼び出しと同等):


window.history.go(-1);
ログイン後にコピー

1ページ進む(forward()の呼び出しと同等):


window.history.go(1);
ログイン後にコピー

同様に、パラメータ「2」を渡します。その後、2 レコード ポイント先に進むことができます。 length 属性値を確認して、履歴スタックにレコード ポイントがいくつあるかを確認できます。


window.history.length;
ログイン後にコピー

2. 履歴レコード ポイントを変更します

HTML5 の新しい

APIextends window.history,履歴ポイントをよりオープンにしました。現在の履歴レコード ポイントを保存したり、現在の履歴レコード ポイントを置き換えたり、履歴レコード ポイントを監視したりすることができます。それぞれについて簡単に説明します。

1. 現在の履歴ポイント

を保存する方法は、

array(Array.push()) のプッシュに似ています。たとえば、次のようになります。

// 当前的url为:http://qianduanblog.com/index.html var json={time:new Date().getTime()}; // @状态对象:记录历史记录点的额外对象,可以为空 // @页面标题:目前所有浏览器都不支持 // @可选的url:浏览器不会检查url是否存在,只改变url,url必须同域,不能跨域 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 に新しい履歴ポイントを追加しないことと、その効果が似ていることです。 to window .location.replace(url) は、履歴記録ポイントに新しい記録ポイントを追加しません。 replaceState() メソッドは、ユーザーのアクションに応じて現在の履歴エントリの状態オブジェクトまたは URL を更新する場合に特に適しています。

3. 履歴ポイントの監視

履歴ポイントの監視は、直感的には URL の変更を監視するものと考えることができますが、URL のハッシュ部分は無視されます。HTML5 には新しい API があります。 onhashchange については、私のブログでもこの方法とブラウザ間互換性のあるソリューションについて説明しています。 window.onpopstate を通じて URL の変更を監視でき、履歴レコード ポイントに保存されているステータス オブジェクト (上記の json オブジェクト) を取得できます。

注目に値します: JavaScript スクリプトwindow.history.pushState と window.history.replaceState の実行は onpopstateevent

をトリガーしません。

もう 1 つ注意すべき点は、ページが最初に開かれたとき、Google Chrome と

Firefoxでは奇妙なことに onpopstate イベントがトリガーされるのに対し、Firefox ではトリガーされないことです。

以上がHTML5のプッシュステートとポップステートの操作履歴を詳しく説明し、更新せずに現在のURLを変更するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!