質問するログイン新規登録

回答編集履歴

1

おかしな挙動の追記

2019/04/22 12:40

投稿

think49
think49

スコア18194

answer CHANGED
@@ -73,4 +73,32 @@
73
73
  - a:link は a:visited を包含する(未訪問+訪問済の状態を表し、全てのリンクを表す)
74
74
  - カスケード法処理完了後、独立した訪問済みスタイル上書き処理が走っており、制作者スタイルシートで a:visited で宣言されなかったプロパティはWebブラウザが内蔵する訪問済みスタイル(デフォルトスタイルシート)に上書きされる
75
75
 
76
+ ### おかしな挙動の追記
77
+
78
+ > 本件の挙動確認をしていたのですが、a:link でbackground-colorを設定しない場合、a:visited のbackground-colorが反映されませんでした。
79
+ > ...(中略)...
80
+ >
81
+ > ```CSS
82
+ > a:visited {
83
+ > background-color: black;
84
+ > color: red;
85
+ > }
86
+ > ```
87
+
88
+ Google Chrome 73.0.3683.103で再現する事を確認しました。
89
+ 開発者ツールの [Styles] タブで `background-color: black;` は有効な状態でしたが、実際の描画には反映されていません。
90
+ 前述の「検証」節で仮定した動作に照らし合わせると、下記の仮説を立てることが出来ます。
91
+
92
+ - 「カスケード処理」では有効
93
+ - カスケード処理後の「訪問済みスタイル上書き処理」で `background-color: black;` が無効化されている
94
+
95
+ 仕様上の「利用者のプライバシー云々」は、`background-image` を併用する事でブラウザ履歴を盗み取れる事実が露見した事を受けての規定と記憶しています。
96
+
97
+ - [:visitedと一緒にbackground-imageとかは使えないようになってるよ。プライバシー保護が理由。(CSS おれおれ Advent Calendar 2012 – 15日目) | Ginpen.com](https://ginpen.com/2012/12/16/visited-privacy-leaking/)
98
+ - [CSS によるブラウザ履歴の漏えいを防ぐ取り組み | Mozilla Developer Street (modest)](https://dev.mozilla.jp/2010/04/plugging-the-css-history-leak/)
99
+ - [visited background-image - Google 検索](https://www.google.com/search?q=visited+background-image)
100
+
101
+ ここで `background` 全体を封印する修正が加えられたなら、一応、辻褄は合います。
102
+ (`background-image` と `background: url()` だけを封印すればいいはずなので、個人的にはどうかと思いますが…)
103
+
76
104
  Re: te2ji さん