使用JavaScript获取用户代理

100

我想获取一个可以获取用户代理并将其传递给属性的脚本。

我正在制作一个网站问题联系表格,通常需要知道用户使用的浏览器。如何检测用户代理字符串并将其作为输入元素的值进行传递。

我的HTML大致如下:

<input type="hidden" id="UserAgent" name="User Agent" />

我希望将用户代理添加到该属性的值中,使它看起来像:

<input type="hidden" id="UserAgent" name="User Agent" value="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10" />

5
不需要使用JavaScript就可以完成这个操作。只需从HTTP标头中读取用户代理字符串即可。 - Bergi
14
@Bergi:实际上,这只是针对需要在服务器端使用的情况。使用JavaScript的话,根据被接受的答案,**navigator.userAgent** 应该就足够了。 - Robin Maben
1
@Robin:OP确实在询问服务器端,他想要获取与联系表单一起发布的UA字符串。 - Bergi
5
如果您正在客户端生成应用程序的某些部分,那么情况就不同了。这似乎是他所做的。 - oligofren
2个回答

196

纯JavaScript

document.getElementById('UserAgent').value = navigator.userAgent;
<input type="text" id="UserAgent">

jQuery

$('#UserAgent').val(navigator.userAgent);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input type="text" id="UserAgent">


10
请在答案中添加一个非jQuery的替代方案。许多新开发人员认为jQuery就是Javascript :-( - Mark Cooper
除非包含jQuery迁移插件,否则无法在jQuery 1.9或更高版本中工作。 - Davlio
@Davlio 这是不正确的。这个例子本身使用的是 jQuery 1.11.1,而没有使用 Migrate 插件。 - Adam Merrifield
@AdamMerrifield 你说得对!我是针对$.browser说的,但是不能编辑评论了。 - Davlio

52

原始问题并未提及jQuery,因此

document.getElementById('UserAgent').value = navigator.userAgent;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接