/
290.txt
172 lines (117 loc) · 8.56 KB
/
290.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
[4] [DFN[[CODE(CSS)@en[:link]]]] [[擬似クラス]]は、未訪問の[[リンク]]を表します [SRC[>>3]]。
[DFN[[CODE(CSS)@en[:visited]]]] [[擬似クラス]]は、訪問済みの[[リンク]]を表します [SRC[>>3]]。
* 仕様書
[REFS[
- [3] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#the-link-pseudo-classes-link-and-visited>
- [29] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
]REFS]
* 意味
[5] [CODE(CSS)@en[[[:link]]]] は未訪問の[[リンク]]を表し、 [CODE(CSS)@en[[[:visited]]]]
が訪問済みの[[リンク]]を表します。両者は互いに排他的です。
[[利用者エージェント]]は訪問してから十分時間が経った[[リンク]]を未訪問扱いとして構いません。
また両者を区別することにより[[利用者]]の許諾なく訪問済み如何を[[著者]]が判定できてしまうため、
すべてを未訪問の[[リンク]]として扱うなどの方法をとって、かつ両者を区別して[[レンダリング]]したりしても構いません。
[SRC[>>3]]
* ハイパーリンク始点アンカー
[15] これらの[[擬似クラス]]は[RUBYB[[[ハイパーリンク始点アンカー]]]@en[hyperlink source anchor]]に適用されます。
;; [16] ということが [[CSS2]] では明記されていません。また [[Selectors3]] では言及すらされていません・・・。
[17] 何が[[ハイパーリンク始点アンカー]]であるかは[[文書言語]]によります [SRC[>>14]]。
** HTML
[30] [[HTML]] では次の[[要素]]が [CODE(CSS)@en[[[:link]]]], [CODE(CSS)@en[[[:visited]]]]
のいずれかに[[一致]]しなければ[['''なりません''']] [SRC[>>29]]。
- [CODE(HTMLe)@en[[[a]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの
- [CODE(HTMLe)@en[[[area]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの
- [CODE(HTMLe)@en[[[link]]]] [[要素]]で [CODE(HTMLa)@en[[[href]]]] [[属性]]のあるもの
** XLink
[18] [[XLink]] では[[探索]]が可能な[[局所要素]]であって [CODE(XMLa)@en[[[actuate]]]] が
[CODE(XML)@en[[[onRequest]]]] であるかのように扱われるものが[[ハイパーリンク始点アンカー]]として扱われるべきだと提案されています [SRC[>>1]]。
;; [19] なぜ [[XLink]] を規定する仕様書がこれを規定せずに提案しているに留まっているのか謎ですが・・・。
[35] 現在の [[Webブラウザー]]は [[SVG]] や [[MathML]] の一部として以外 [[XLink]]
に対応していないので、 [CODE(CSS)@en[[[:link]]]] や [CODE(CSS)@en[[[:visited]]]]
もその場合のみ適用されます。
;; [36] 以前は [[Gecko]] はそれ以外の[[単純リンク]]にも対応していたので、これら[[擬似クラス]]適用されていたかもしれません
(未確認)。
[REFS[
- [37] [[SVG]] の [CODE(XMLa)@en[[[xlink:href]]]] [[属性]]の例
<http://suika.fam.cx/~wakaba/-temp/test/xml/xlink/selectors-link-2.xml>
]REFS]
* 歴史
** CSS1
[REFS[
- [27] [CITE[Cascading Style Sheets: a draft specification]] ([TIME[1995-10-07 10:35:41 +09:00]] 版) <http://www.w3.org/Style/CSS/draft4.html#pseudo>
- [22] [CITE[Cascading Style Sheets, level 1]] ([TIME[2008-04-10 02:23:32 +09:00]] 版) <http://www.w3.org/TR/CSS1/#anchor-pseudo-classes>
]REFS]
[28] これらの[[擬似クラス]]は >>27 で追加されました。
[23] [[CSS1]] では [CODE(CSS)@en[[[:link]]]], [CODE(CSS)@en[[[:visited]]]], [CODE(CSS)@en[[[:active]]]]
の3つのいずれか1つの状態であるとされていました。
;; [26] これは [[HTML]] の [CODE(HTMLe)@en[[[body]]]] [[要素]]の[[属性]]に基づく当時の[[Webブラウザー]]の処理モデルに由来しています。
[24] [[CSS1]] では [[HTML]] の [CODE(HTMLe)@en[[[a]]]] [[要素]]の [CODE(HTMLa)@en[[[href]]]]
[[属性]]があるものに適用されるとされていました。
** CSS2
[REFS[
- [14] [CITE@en[Selectors]] ([TIME[2011-06-07 13:09:52 +09:00]] 版) <http://www.w3.org/TR/CSS2/selector.html#link-pseudo-classes>
]REFS]
[25] [[CSS2]] では [[HTML]] 以外への適用も考慮し、適用対象は[[マーク付け言語]]によって決まるとされました。
** XLink
[REFS[
- [1] [CITE@en[XML Linking Language (XLink) Version 1.1]]
([TIME[2008-04-04 00:59:29 +09:00]] 版)
<http://www.w3.org/TR/xlink11/#intro>
]REFS]
[33] [[XLink]] 仕様書は [[XLink]] への適用について言及していました。
** 選択子3
[REFS[
- [32] [CITE@en[Selectors Level 3]] ([TIME[2011-09-29 22:16:17 +09:00]] 版) <http://www.w3.org/TR/selectors/#the-link-pseudo-classes-link-and-visited>
]REFS]
** HTML
[REFS[
- [31] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2011-11-12 00:22:26 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#pseudo-classes>
]REFS]
[34] [[HTML]] 仕様書は [[HTML]] の[[要素]]への適用について言及しています。
* 不思議解釈
[21] [[HTML]] の[[属性名]]に引きずられて [CODE(CSS)@en[[[:vlink]]]] [[擬似クラス]]が存在しているとする解説もあります。
* 関連
[20] 元々 [[HTML]] の [CODE(HTMLa)@en[[[link]]]] [[属性]]や [CODE(HTMLa)@en[[[vlink]]]]
[[属性]]に相当する機能として導入されたようです。
* メモ
[2] [CITE@ja[CSS によるブラウザ履歴の漏えいを防ぐ取り組み « Mozilla Developer Street (modest)]]
([TIME[2010-05-01 01:24:29 +09:00]] 版)
<https://dev.mozilla.jp/2010/04/plugging-the-css-history-leak/>
[8] [CITE[Bug 147777 – :visited support allows queries into global history]] ([CODE[2008-10-23 23:45:21 +09:00]] 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=147777>
[9] [CITE@ja[「visited疑似クラスのビーコンを拾うサービスが登場」@水無月ばけらのえび日記]] ([TIME[2008-10-23 21:33:55 +09:00]] 版) <http://bakera.jp/ebi/topic/3298>
[10] [CITE@ja-JP[高木浩光@自宅の日記 - 楽天CERTに対するブラウザの脆弱性修正を阻害しない意思確認]] ([[高木浩光]] 著, [TIME[2008-12-14 23:26:14 +09:00]] 版) <http://takagi-hiromitsu.jp/diary/20081213.html#p01>
[11] [CITE@en-US[Preventing attacks on a user's history through CSS :visited selectors]]
([TIME[2010-04-07 13:03:44 +09:00]] 版)
<http://dbaron.org/mozilla/visited-privacy>
[12] [CITE@en-us[Privacy and the :visited selector - MDC]]
([TIME[2010-06-01 08:08:04 +09:00]] 版)
<https://developer.mozilla.org/en/CSS/Privacy_and_the_%3avisited_selector>
[13] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-08-03 23:55:56 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=5229&to=5230>
[7] [CITE[IRC logs: freenode / #whatwg / 20110202]]
( ([TIME[2011-03-19 11:10:11 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110202>
[38] [CITE@en-US[Preventing attacks on a user's history through CSS :visited selectors]]
( ([TIME[2010-04-07 04:03:44 +09:00]] 版))
<http://dbaron.org/mozilla/visited-privacy>
[39] [CITE@en[Web Applications 1.0 r2778 Defined how pseudo-classes match HTML concepts. Redid how rtl/ltr changes are marked. Stopped <legend> centering for <figure>. Removed <multicol> support. Removed <basefont> support. Removed obsolete notes. Fixed minor typos.]]
( ([TIME[2009-02-11 16:36:00 +09:00]] 版))
<http://html5.org/r/2778>
[40] [CITE@en[Web Applications 1.0 r2778 Defined how pseudo-classes match HTML concepts. Redid how rtl/ltr changes are marked. Stopped <legend> centering for <figure>. Removed <multicol> support. Removed <basefont> support. Removed obsolete notes. Fixed minor typos.]]
( ([TIME[2009-02-11 16:36:00 +09:00]] 版))
<http://html5.org/r/2778>
[41] [CITE@en[Web Applications 1.0 r8865 links should be cursor:pointer]]
( ([TIME[2014-11-27 09:31:00 +09:00]] 版))
<https://html5.org/r/8865>
[FIG(quote)[
[FIGCAPTION[
[6] [CITE[IRC logs: freenode / #whatwg / 20150529]]
([TIME[2015-05-30 11:27:51 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150529>
]FIGCAPTION]
>
> # '''['''14:21''']''' <IZh> Hi. I read about one-time possible privacy attack allowing to discover, what sites user visited. The idea is to measure time of loading favucon.ico from various sites. If it is in a cache, it will load sifnificantly faster. What you think?
> # '''['''14:23''']''' <IZh> And the time could be compared with favicon.ico?someRandomValue
> # '''['''15:04''']''' <gsnedders> IZh: such things have been vaguely plausible for years, and somewhat known of
]FIG]