blob: b5f2a23ab055bea7f69c07350b36ea58fe6aa97a (
plain)
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
|
---
title: NavigatorID.userAgent
slug: Web/API/NavigatorID/userAgent
translation_of: Web/API/NavigatorID/userAgent
---
<div>{{ApiRef("HTML DOM")}}</div>
<p><code><strong>NavigatorID.userAgent</strong></code> 只读属性返回当前浏览器的 user agent 字符串。</p>
<div class="note">
<p>这一规范要求浏览器通过这一属性提供尽可能少的信息。不要假定同一浏览器的这一属性值会在未来的版本中保持不变。尽量不要使用这一属性,或者仅仅在现有和更早的版本中使用。较新的浏览器可能开始使用相同或近似的 UA,对于早期的浏览器而言:你不能确保该浏览器是其 <code><strong>NavigatorID.userAgent</strong></code> 属性所宣称的浏览器。</p>
<p>另外要记住,用户可以修改浏览器的此属性(UA 欺骗).</p>
</div>
<p>基于 user agent 字符串来识别浏览器是<strong>不可靠</strong>的,<strong>不推荐使用</strong>,因为 user agent 字符串是用户可配置的。例如:</p>
<ul>
<li>在 Firefox 浏览器中,你可以通过 <code>about:config</code> 页面的 <code>general.useragent.override</code> 字段修改 user agent。某些 FireFox 插件会更改此字段。 但这个字段只会影响到 http 请求的 header,不影响通过 Javascript 代码检测浏览器。</li>
<li>Opera 6+ 允许用户通过菜单设置浏览器辨识字符。</li>
<li>Microsoft Internet Explorer 通过修改 Windows 注册表修改 UA 。</li>
<li>Safari 和iCab 允许用户通过菜单选项将 UA 值修改为预设的Internet Explorer 或Netscape 浏览器 UA 。</li>
</ul>
<h2 id="Syntax" name="Syntax">语法</h2>
<pre class="syntaxbox notranslate">var <var>ua</var> = navigator.userAgent;
</pre>
<h3 id="Value" name="Value">值</h3>
<p>{{domxref("DOMString")}} 规定了浏览器提供给 {{Glossary("HTTP")}} headers 和其响应,以及其他与{{domxref("Navigator")}} 相关的方法的完整用户代理属性 。</p>
<p>用户代理属性由几个信息段组成一个整齐的结构,每个信息段都取值于其他 {{domxref("Navigator")}} 属性,这些属性也可以是用户设置的。基于 Gecko 内核的浏览器的 UA 遵守下列通用结构规范。</p>
<pre class="notranslate">userAgent = appCodeName/appVersion number (Platform; Security; OS-or-CPU;
Localization; rv: revision-version-number) product/productSub
Application-Name Application-Name-version
</pre>
<h2 id="Example" name="Example">例子</h2>
<pre class="brush:js notranslate">alert(window.navigator.userAgent)
// alerts "Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010725 Netscape6/6.1"
</pre>
<ul>
</ul>
<h2 id="规范">规范</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('HTML WHATWG', '#dom-navigator-useragent', 'NavigatorID.userAgent')}}</td>
<td>{{Spec2('HTML WHATWG')}}</td>
<td>Initial definition</td>
</tr>
</tbody>
</table>
<h2 id="浏览器兼容性">浏览器兼容性</h2>
<p>{{Compat("api.NavigatorID.userAgent")}}</p>
<h2 id="See_also" name="See_also">更多</h2>
<ul>
<li>{{httpheader("User-Agent")}} HTTP header</li>
</ul>
|