javascript 获取用户操作系统和版本号
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3441880/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Get users OS and version number
提问by PaulAdamDavis
I've spent a day on and off Googeling for this; no luck so far.
为此,我在谷歌搜索上断断续续地度过了一天;到目前为止没有运气。
How can I get the users OS and version. Mine would me Mac OS X 10.6.4, the spare PC in the office would be Windows XP SP3. You see what I'm getting at.
如何获取用户的操作系统和版本。我的是 Mac OS X 10.6.4,办公室的备用 PC 是 Windows XP SP3。你明白我在说什么。
I've seen a million and one methods to get the users platform alone, just not the version.
我见过一百万零一种方法来单独获取用户平台,而不是版本。
JS would be ideal, but a server-side (PHP) solution is OK too.
JS 是理想的,但服务器端 (PHP) 解决方案也可以。
回答by Gaurang
<?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
function getOS() {
global $user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/windows nt 10.0/i' => 'Windows 10',
'/windows nt 6.2/i' => 'Windows 8',
'/windows nt 6.1/i' => 'Windows 7',
'/windows nt 6.0/i' => 'Windows Vista',
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
'/windows nt 5.1/i' => 'Windows XP',
'/windows xp/i' => 'Windows XP',
'/windows nt 5.0/i' => 'Windows 2000',
'/windows me/i' => 'Windows ME',
'/win98/i' => 'Windows 98',
'/win95/i' => 'Windows 95',
'/win16/i' => 'Windows 3.11',
'/macintosh|mac os x/i' => 'Mac OS X',
'/mac_powerpc/i' => 'Mac OS 9',
'/linux/i' => 'Linux',
'/ubuntu/i' => 'Ubuntu',
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile'
);
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
return $os_platform;
}
function getBrowser() {
global $user_agent;
$browser = "Unknown Browser";
$browser_array = array(
'/msie/i' => 'Internet Explorer',
'/firefox/i' => 'Firefox',
'/safari/i' => 'Safari',
'/chrome/i' => 'Chrome',
'/opera/i' => 'Opera',
'/netscape/i' => 'Netscape',
'/maxthon/i' => 'Maxthon',
'/konqueror/i' => 'Konqueror',
'/mobile/i' => 'Handheld Browser'
);
foreach ($browser_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$browser = $value;
}
}
return $browser;
}
$user_os = getOS();
$user_browser = getBrowser();
$device_details = "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os."";
print_r($device_details);
echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");
?>
回答by Peter Gluck
You can use the HTTP_USER_AGENT field in the $_SERVER array. For example, the following code will detect iPhone and Android users and redirect them to a different location (e.g., the iTunes App Store or Android Marketplace):
您可以使用 $_SERVER 数组中的 HTTP_USER_AGENT 字段。例如,以下代码将检测 iPhone 和 Android 用户并将他们重定向到不同的位置(例如,iTunes App Store 或 Android Marketplace):
$http_user_agent = $_SERVER['HTTP_USER_AGENT'];
if (stristr($http_user_agent, "android") != FALSE) {
header("Location: " . ANDROID_REDIRECT);
}
else if (stristr($http_user_agent, "iphone") != FALSE) {
header("Location: " . IOS_REDIRECT);
}
else {
header("Location: " . DEFAULT_REDIRECT);
}
Note that ANDROID_REDIRECT, IOS_REDIRECT, and DEFAULT_REDIRECT are constants defined with the PHP 'define' function.
请注意,ANDROID_REDIRECT、IOS_REDIRECT 和 DEFAULT_REDIRECT 是使用PHP 'define' 函数定义的常量。
回答by JustBoo
The link below appears to have javascriptcode to detect the OS - at the bottom. As a bonus it has a few other features like browser type and version detection as well.
下面的链接似乎有用于检测操作系统的javascript代码 - 在底部。作为奖励,它还有一些其他功能,例如浏览器类型和版本检测。
http://www.quirksmode.org/js/detect.html
http://www.quirksmode.org/js/detect.html
HTH
HTH
回答by user1400
回答by Sam Bisbee
All of the server side solutions that you will see will really boil down to using the User-Agent string in the request.
您将看到的所有服务器端解决方案都归结为在请求中使用 User-Agent 字符串。
Doing the work on the client side (JS) has the benefit of being able to interact directly with the browser/OS. For example, jQuery's browser function- which might be exactly what you need - runs a series of tests on the DOM/browser to see how it reacts, and then determines the browser type and version based on those reactions. There have been some projects to extend jQuery's browser function to include OS detection, but I have not used them before; easily found with a quick Google search.
在客户端 (JS) 完成工作的好处是能够直接与浏览器/操作系统交互。例如,jQuery 的浏览器功能——这可能正是您所需要的——在 DOM/浏览器上运行一系列测试以查看它的反应,然后根据这些反应确定浏览器类型和版本。已经有一些项目将 jQuery 的浏览器功能扩展到包括 OS 检测,但我之前没有使用过它们;通过快速的谷歌搜索很容易找到。
Cheers.
干杯。
回答by Victor Jalencas
the only hint you have, other than doing a network probe, which isn't too reliable anyway, is to examine the User-Agent header, but you cannot rely on it too much, either, as anyone can modify the default headers that his browser sends.
除了进行网络探测(无论如何都不太可靠)之外,您拥有的唯一提示是检查 User-Agent 标头,但您也不能过分依赖它,因为任何人都可以修改他的默认标头浏览器发送。

