ブラウザ履歴を理解する
これは、ブラウザーでの履歴スタック管理の関連コンテンツについて説明する基本的な記事です。これを書いた理由は、最近、PushState を使用して SPA を実装するときにどのような問題が発生するかを調べたかったためです。PushState は最終的にブラウザー履歴スタックのコンテンツに影響を与えるため、ブラウザーがそれをどのように管理するかを検討しました。履歴スタック。というのも、調べていくうちに、今まで気づかなかった重要なポイントがいくつか見つかったので、記録しておきました。
デモのアドレス: http://liuyunzhuge.github.io/blog/history/demo1.html
このデモは、この記事で後述する関連テストに使用されます。興味がある場合は、新しい問題をテストするたびに、既に開いている問題から開くのではなく、新しいタブでこのデモを開くことをお勧めします。 Web ページのタブを開きます。Web ページのタブが開かれているため、その履歴スタックには以前にアクセスした Web ページの記録がすでに含まれているため、テストする問題の結果に影響します。
ブラウザは、同じウィンドウ (タブ) 内で訪問した Web ページを記録します。次のいずれかの方法で Web ページを変更しても、ブラウザは変更された Web ページを記録し、ブラウザの転送や転送を通じて使用できるようにします。 [戻る] ボタンを使用すると、訪問した Web ページにすぐに切り替えることができます:
1) アドレス バーに Web ページのアドレスを直接入力します。
2) Web ページ内のハイパーリンクをクリックすると、他の Web ページにジャンプできません。新しいウィンドウで開くリンクであること。
3) スクリプトを通じて location.href を変更することで他の Web ページにジャンプする。ただし、フォームを送信して他の Web ページにジャンプすることはできない。窓。
つまり、Web ページが同じウィンドウ内でジャンプしている限り、ブラウザはそれを記録します。更新を除いて、履歴オブジェクトの長さ属性は、現在のウィンドウに保存されている履歴レコードの総数を表示できます。この属性は、Web ページが変更された場合にのみ変更されます。 Web ページの更新中 このプロパティは変更されません。
操作テスト 1: 前のデモのアドレスをコピーし、Chrome ブラウザで次の手順に従ってください:
新しいタブを開き、demo2.html をクリックし、demo3.html をクリックします。ブラウザは、以下の図と同様の方法で上記のアクセス記録を保存します:
1) forward 関数/go(1)/forward はポインタを 1 位置だけ上に移動します。
2) reverse 関数/go(-1)/forward は、ポインターを 1 位置下に移動するだけです。
3) go(n) はポインタを n 位置上に移動し、go(-n) はポインタを n 位置下に移動します。ブラウザは履歴スタックで Web ページを見つけ、移動されたポインターの位置に基づいて表示します。
の結果をテストするために
操作を実行し続ける場合は、引き続き次の操作を実行します。動作テスト2:
ブラウザの戻るボタンを7回クリックします。この時、ブラウザの履歴スタックの保存状況は以下の状態になります:
history.go(n)、history.go(-n)は任意の位置にポインタを移動できますが、移動する位置が履歴スタックの位置範囲を超える場合、ポインタは移動しません。そのため、動作テスト 2 の結果では、history.go(-100) とhistory.go(100) の呼び出しは機能しません。
履歴スタックの内容を変更する状況が他に 2 つあります。
動作テスト 3: 動作テスト 2 の結果に従い、進むボタンを 3 回クリックすると、ブラウザの履歴スタックは次の状態になります:
この時点では、操作テスト 2 も操作テスト 3 も履歴スタックの内容を変更していないため、正しければ、ページ上の履歴統計は 8 のままであるはずです。
操作テスト 4: 次に、次の 2 つの手順を実行します: [demo2.html] をクリックし、[demo3.html] をクリックします。この時点で、ページ上の履歴統計は次のようになります:
ブラウザの履歴レコード管理におけるもう 1 つの重要なポイントは、保存される履歴スタックの総数に制限があることです。Chrome と Firefox はどちらも 50 です。履歴スタックのストレージ量がこの制限を超えると、履歴レコードのストレージはローリング方式で格納されます。つまり、新しいレコードがスタックの一番上にプッシュされ、一番下のレコードが一番下から削除されます。スタックの。デモページ上でdemo1、demo2、demo3、demo4を切り替えてクリックし続けると、一定回数に達するとページに印刷されている統計情報が変化しなくなり、履歴の上限に達したことになります。ただし、IE11 では 100 を超えるまでクリックしたところ、まだ変化していることがわかり、IE の制限がより高いかどうかを示しています。 。
この記事にはブラウザの履歴管理に関する内容が含まれているため、分析に不備がある可能性があります。ご批判や修正をお待ちしております。上記の内容が、歴史と州への理解を深める必要がある友人たちに役立つことを願っています:)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。
