/
482.txt
163 lines (133 loc) · 8.37 KB
/
482.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
* 仕様書
[REFS[
- [13] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-navigator-object>'''
-- [11] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#plugins-2>
- [25] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#the-workernavigator-object>
- [9] [CITE@en[Geolocation API Specification]] ([TIME[2013-10-22 23:10:42 +09:00]] 版) <http://www.w3.org/TR/geolocation-API/#geolocation_interface>
]REFS]
* Navigator オブジェクトのメンバー
[4] [CITE[Results for navigator]] ([TIME[2009-02-28 13:57:07 +09:00]] 版) <http://suika.fam.cx/gate/test-results/list/enum-navigator/all>
をご覧ください。
- [1] ''navigatorオブジェクトのプロパティ一覧'' <http://game.gr.jp/ua/s1.htm>
[3]
[FIG(short list)[
- [CODE(DOMa)@en[[[app]]]]
- [CODE(DOMa)@en[[[appCodeName]]]] [SRC[[[JavaScript 1.0]]]]
- [CODE(DOMa)@en[[[appName]]]] [SRC[[[JavaScript 1.0]]]]
- [CODE(DOMa)@en[[[appVersion]]]] [SRC[[[JavaScript 1.0]]]]
- [CODE(DOMa)@en[[[buildID]]]],[[Gecko]]
- [CODE(DOMa)@en[[[contacts]]]]
- [CODE(DOMa)@en[[[cookieEnabled]]]]
- [CODE(DOMa)@en[[[geolocation]]]]
- [CODE(DOMm)@en[[[hasPendingMessages]]]]
- [CODE(DOMa)@en[[[mozIsLocallyAvailable]]]]
- [CODE(DOMa)@en[[[javaEnabled]]]]
- [CODE(DOMa)@en[[[language]]]]
- [CODE(DOMa)@en[[[maxTouchPoints]]]]
- [CODE(DOMa)@en[[[messaging]]]]
- [CODE(DOMa)@en[[[mimeTypes]]]]
- [CODE(DOMa)@en[[[nfc]]]]
,[CODE(DOMa)@en[[[onLine]]]],[[Gecko]]
,[CODE(DOMa)@en[[[oscpu]]]],[[Gecko]]
- [CODE(DOMa)@en[[[platform]]]] [SRC[[[JavaScript 1.2]]]]
- [CODE(DOMa)@en[[[plugins]]]]
- [CODE(DOMa)@en[[[preference]]]] [SRC[[[JavaScript 1.2]]]]
,[CODE(DOMa)@en[[[product]]]],[[Gecko]]
,[CODE(DOMa)@en[[[productSub]]]],[[Gecko]]
,[CODE(DOMm)@en[[[registerContentHandler]]]],[[Gecko]]
,[CODE(DOMm)@en[[[registerProtocolHandler]]]],[[Gecko]]
- [CODE(DOMm)@en[[[savePreferences]]]] [SRC[[[JavaScript 1.2]]]]
,[CODE(DOMa)@en[[[securityPolicy]]]],[[Gecko]]
- [CODE(DOMm)@en[[[setMessageHandler]]]]
- [CODE(DOMa)@en[[[taintEnabled]]]] [SRC[[[JavaScript 1.1]]]]
- [CODE(DOMa)@en[[[tcpPermission]]]]
- [CODE(DOMa)@en[[[tcpServerPermission]]]]
- [CODE(DOMa)@en[[[telephony]]]]
- [CODE(DOMa)@en[[[udpPermission]]]]
- [CODE(DOMa)@en[[[userAgent]]]] [SRC[[[JavaScript 1.0]]]]
- [CODE(DOMa)@en[[[vendor]]]]
- [CODE(DOMa)@en[[[vendorSub]]]]
- [CODE(DOMm)@en[[[vibrate]]]]
- [CODE(DOMa)@en[[[webdriver]]]]
- [CODE(DOMm)@en[[[yieldForStorageUpdates]]]]
]FIG]
[12] 次の[[インターフェイス]] (いずれも [CODE(IDL)@en[[[NoInterfaceObject]]]])
は、[CODE(IDL)@en[[[Navigator]]]] [[オブジェクト]]に[[実装]]されます。
[FIG(list)[
- [DFN[[CODE(DOMi)@en[[[NavigatorPlugins]]]]]] [[インターフェイス]] [SRC[>>11]]
- [DFN[[CODE(DOMi)@en[[[NavigatorCookies]]]]]] [[インターフェイス]]
- [DEL[[DFN[[CODE(DOMi)@en[[[NavigatorStorageUtils]]]]]] [[インターフェイス]]]] (現 [CODE(DOMi)@en[[[NavigatorCookies]]]])
]FIG]
* 歴史
** 誕生
[15] [[NN2]] ([[JavaScript 1.0]]) で導入されました。
[14] [[WinIE 3]] 以上が対応しています。 [[IE]] は
[DFN[[CODE(JS)@en[[[window.clientInformation]]]]]] として実装しています。
;; [18] この当時から [CODE(JS)@en[[[window.navigator]]]] も実装されていたのかどうか?
;; [2] [CODE(DOMa)@en[navigator]] が [[Netscape Navigator]] を想起させる
(由来する?) ことを忌避したのでしょうか。
[REFS[
- [16] [CITE@ja[clientInformation object (Internet Explorer)]]
([TIME[2015-07-10 00:25:55 +09:00]] 版)
<https://msdn.microsoft.com/ja-jp/library/ms535860(v=vs.85).aspx>
- [17] [CITE@ja[clientInformation]]
([TIME[2015-07-10 00:26:12 +09:00]] 版)
<https://msdn.microsoft.com/ja-jp/library/cc409818.aspx>
]REFS]
** 標準化
[19] [CODE(DOMi)@en[[[Navigator]]]] [[オブジェクト]]は [[W3C]] からは完全に無視されていました。
[20] 2005年9月1日から2006年1月1日までの間に、 [[WHATWG]] [[Web Applications 1.0]] [SRC[>>21]]
(現 [[HTML Standard]]) に [CODE(JS)@en[[[window.navigator]]]] と
[CODE(JS)@en[[[navigator.onLine]]]] が追加されました。これが [CODE(DOMi)@en[[[Navigator]]]]
の標準化のはじまりでした。 [[NN2]] から実に10年が経過していました。
[22] この時 [CODE(JS)@en[[[window.navigator]]]] が定義されていましたが、
[[IE]] は [CODE(JS)@en[[[window.clientInformation]]]] も実装していることが[[コメント]]として記述されていました。
また[[インターフェイス]]名は [DFN[[CODE(DOMi)@en[[[ClientInformation]]]]]] とされていました。
[24] その後2008年になって、 [CODE(DOMi)@en[[[Navigator]]]] [[オブジェクト]]の
[[Webブラウザー]]情報に関する諸[[属性]]が [[HTML5]] (旧 [[Web Applications 1.0]]、
現 [[HTML Standard]]) に追加されました [SRC[>>23]]。[[インターフェイス]]名は、
この時 [CODE(DOMi)@en[[[Navigator]]]] に改められました。
[REFS[
- [21] [CITE@en-GB-hixie[Web Applications 1.0]] ([TIME[2014-03-06 04:52:19 +09:00]] 版) <https://whatwg.org/specs/web-apps/2006-01-01/#scs-browser>
- [23] [CITE@en[Web Applications 1.0 r2070 Define a set of properties for browser detection.]] ([TIME[2008-08-13 10:38:00 +09:00]] 版) <https://html5.org/r/2070>
]REFS]
[5] [CITE@en[Web Applications 1.0 r5834 Split the Navigator IDLs to make the various places it's mentioned easier to understand.]]
( ([TIME[2011-02-05 09:09:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5833&to=5834>
[26] その後[[ワーカー]]でも利用可能とするため、 [CODE(DOMi)@en[[[WorkerNavigator]]]]
[[インターフェイス]]が追加されています。[[ワーカー環境]]の [CODE(DOMi)@en[[[WorkerNavigator]]]]
と[[文書環境]]の [CODE(DOMi)@en[[[Navigator]]]] とでは、[[晒され]]ているメンバーが異なります。
[6] [CITE[''''''[''''''whatwg'''''']'''''' Proposal for a web application descriptor]]
( ([TIME[2011-07-27 07:45:36 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-July/032631.html>
[7] [CITE[IRC logs: freenode / #whatwg / 20130115]]
( ([TIME[2013-01-16 21:31:32 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130115#l-49>
[8] [CITE[IRC logs: freenode / #whatwg / 20130225]]
( ([TIME[2013-03-02 19:44:27 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130225#l-398>
[FIG(quote)[
[FIGCAPTION[
[10] [CITE[IRC logs: freenode / #whatwg / 20150126]]
([TIME[2015-01-27 10:36:28 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150126#l-278>
]FIGCAPTION]
> # '''['''13:54''']''' <Ms2ger> Hm, Presto had navigator.appMinorVersion?
> # '''['''14:15''']''' <zcorpan_> seems so
> # '''['''14:20''']''' <zcorpan_> also browserLanguage, userLanguage
> # '''['''14:21''']''' <Ms2ger> browserLanguage only if navigator.appName == "Microsoft Internet Explorer"
> # '''['''14:22''']''' <zcorpan_> looks like both of those have some usage on github
> # '''['''14:24''']''' <Ms2ger> return (navigator.browserLanguage || navigator.language || navigator.userLanguage).substr(0,2)
> # '''['''14:24''']''' <zcorpan_> "navigator.language" 138,088 "navigator.userLanguage" 51,830 "navigator.browserLanguage" 14,089
> # '''['''14:24''']''' <zcorpan_> "navigator.languages" 991
]FIG]
[27] [[HTML5]] 以後に追加された、主に外部装置からの入出力に関わる諸拡張 [[API]]
は、 [CODE(DOMi)@en[[[Navigator]]]] に追加されることが慣例となっています。
[[装置]]に依存して利用できるかもしれないしできないかもしれないことが
[CODE(DOMi)@en[[[Navigator]]]] オブジェクト上の既存のメンバーの性質と似ていること、
[[大域オブジェクト]]と違って[[スクリプト]]定義の変数や関数と衝突する虞がないことなどの理由があるのでしょう。
しかし統括的な設計者もなく無秩序に開発が進められ、標準不在の標準化が進んでいる(謎)感は否めません
([[Web]] 技術は全体的にそんなものですが...)。
[28] [CITE@en[Expose some NavigatorID members only on Window · whatwg/html@1b1ab95]]
([TIME[2015-10-02 11:00:56 +09:00]] 版)
<https://github.com/whatwg/html/commit/1b1ab957814561d1e819a8ea4f03d5fd7f5a050e>