【问题标题】:Simple operating system checking from HTML/JS从 HTML/JS 进行简单的操作系统检查
【发布时间】:2011-07-08 05:20:10
【问题描述】:

我看到了许多关于使用 JS 获取有关操作系统的详细信息的问题。但我只想知道我是否在 Windows 上 - 我的浏览器插件最初只支持 Windows,所以我不想让用户毫无意义地下载 EXE/MSI 安装程序。

我认为你可以在不使用 JS 的情况下做一些这样的事情......我在旧书 IIRC 中看到了奇怪的条件 HTML 来检测 IE。

【问题讨论】:

标签: javascript html browser browser-detection


【解决方案1】:

您可以为您的站点创建一个隐藏的下载链接和一个备用样式表,并使用条件 cmets 在它们之间切换:

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

在该样式表中,普通浏览器会看到:

#download
{
  display: none;
}

但在特殊的ie.css 样式表中,您可以使其可见:

#download
{
  display: block !important;
}

如果你想全部使用 JavaScript,试试这个功能:

if (navigator.appVersion.indexOf('Win') != -1 && /MSIE (\d+\.\d+);/.test(navigator.userAgent))
{
  var version = new Number(RegExp.$1);

  if (version > 7)
  {
    alert('You are using a compatible browser.');
  }
}

我使用的是 Chrome 和 Linux,所以无法测试(而且我懒得切换用户代理字符串)。

【讨论】:

  • 那种奇怪的[if IE 6] 语法就是我所想的。但这不是仅适用于浏览器...例如,您如何确定 Windows Vs Linux 上的 FireFox?您在这些上有很好的链接吗?
  • 这就是 JS 的用途。我会在一秒钟内发布一个函数。
  • 我已经更新了答案,所以也许你可以测试我的功能(或删除正则表达式)。
  • 我只是在测试更简单的东西:if(navigator.platform.substr(0,3).toLowerCase() == "win")
  • 但是保证您会找到使用 IE 的人的费用? Firefox、Chrome 等可在 Windows 上运行,并且仍然提供相同的子字符串...
【解决方案2】:

不能用navigator.platform来检查吗? 就像 if (navigator.platform == whatever) 一样。

是的: http://www.w3schools.com/jsref/prop_nav_platform.asp

【讨论】:

【解决方案3】:

如果你不使用 javascript,我唯一能想到的就是利用 IE Conditional comments,但即便如此,它也只能让你包含/排除一些 javascript 或 css。

如果您真的想了解操作系统、浏览器等,可以尝试解析用户代理字符串。它报告浏览器、操作系统和其他值,但不可靠(例如,您可以伪造字符串)。 Quirksmode有很好的检测浏览器和操作系统的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-20
    • 2013-08-16
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 2014-12-18
    • 2013-09-08
    • 2012-01-22
    相关资源
    最近更新 更多