history

既読URLリスト (Web)

[42] Webブラウザーは、既読URLリストを持ちます。その挙動は明文化されておらず、 完全に実装依存ですが、大まかな動作は共通しています。

既読化

[43] navigate がある程度の段階まで進行すると、 URL既読URLリストに追加します (既読化)。

navigate も参照。

[44] HTTPリダイレクトHSTS などで URL が書き換わる場合には、 両方が追加されるのが一般的なのではないかと思われます。

[45] かつての IEURL素片を無視していました。 この動作は Web互換とは断言できません。 素片識別子, 朝日奈クエリ

[48] pushState/replaceState が影響するのかは不明です。

[11] private browsing での動作は実装依存です。 既読化が何も行わず、 :visited に何も一致しない実装もあるようです。


[6] ブラウザー拡張history API から追加することもできます。

[3] 既読化された際、 history API の onVisited が呼び出されます。

参照

[46] :visited/:linkレンダリングには、 既読URLリストリンク先URL が含まれているか否かを利用します。

:visited 参照。

[13] レンダリングの更新でほぼリアルタイムに反映されるのが普通です。

削除

[47] 既読URLリストの項目は、古くなったら自動的に削除されます。

[10] 昔の Webブラウザーには、何日経ったら削除するかの設定項目が用意されていました。


[4] ブラウザー拡張history API から削除もできます。

[5] 削除時には history API の onVisitRemoved が呼び出されます。

ブラウザー拡張の history API

[2] Chrome拡張の API chrome.history は、訪問履歴にアクセスできるものです。 URL のみならず、訪問方法・日時などの情報も保持しているようです。

プライバシー

[7] 閲覧履歴はプライバシーに関わる情報であり、 fingerprinting vector でもあります。

[8] :visited/:linkレンダリングにこそ反映されますが、 著者スクリプトからはアクセスできません。

:visited 参照。

[12] 同じ起源Webページを閲覧したことがあるかどうかは、 localStorage に保存するなど、他のページと協調することで、 知れるようにすることができます。同じ起源でなくとも、 postMessage などで情報交換の方法を予め用意しておけば、 知ることはできます。 しかし、完全な第三者の Webページを閲覧したことがあるかどうかは、取得できません。

関連

[9] 閲覧文脈セッション履歴と直接の連動関係にはありません。

[14] private browsing の場合など、セッション履歴中にあっても既読URLリストにはないことがあります。