如何检测浏览器的版本
本文介绍了在启用JavaScript的Web浏览器中进行浏览器检测的基本理论和技巧。
描述: 尽管大多数脚本都适用于启用JavaScript的Web浏览器,但某些功能在某些浏览器上可能无法正常工作,即与浏览器有关,并且在某些情况下,旧的Web浏览器可能不支持某些脚本。
在某些情况下,了解客户端的Web浏览器非常重要,以便适当地提供某些内容或信息。基本上,它允许您了解客户端的Web浏览器版本和名称,而我们需要为不同的浏览器编写不同的函数以进行检测。
浏览器检测: 主要有两个对象用于浏览器检测,如下所示:
- navigator.appName
- navigator.appVersion
第一个对象的目的是确定Web浏览器,而第二个对象的目的是确定Web浏览器的版本。
例如,如果浏览器是Mozilla Firefox,navigator.appName返回字符串“Mozilla Firefox”。如果是Edge,navigator.appName返回字符串“Microsoft Edge”。使用这两个对象,我们可以创建一个提示框来显示客户端正在使用的Web浏览器,而这个navigator对象包含有关Web浏览器版本、名称等的所有信息。
示例: 这个示例展示了上述方法的应用。
<script Language="JavaScript">
var objappVersion = navigator.appVersion;
var browserAgent = navigator.userAgent;
var browserName = navigator.appName;
var browserVersion = '' + parseFloat(navigator.appVersion);
var browserMajorVersion = parseInt(navigator.appVersion, 10);
var Offset, OffsetVersion, ix;
// For Chrome
if ((OffsetVersion = browserAgent.indexOf("Chrome")) != -1) {
browserName = "Chrome";
browserVersion = browserAgent.substring(OffsetVersion + 7);
}
// For Microsoft internet explorer
else if ((OffsetVersion = browserAgent.indexOf("MSIE")) != -1) {
browserName = "Microsoft Internet Explorer";
browserVersion = browserAgent.substring(OffsetVersion + 5);
}
// For Firefox
else if ((OffsetVersion = browserAgent.indexOf("Firefox")) != -1) {
browserName = "Firefox";
}
// For Safari
else if ((OffsetVersion = browserAgent.indexOf("Safari")) != -1) {
browserName = "Safari";
browserVersion = browserAgent.substring(OffsetVersion + 7);
if ((OffsetVersion = browserAgent.indexOf("Version")) != -1)
browserVersion = browserAgent.substring(OffsetVersion + 8);
}
// For other browser "name/version" is at the end of userAgent
else if ((Offset = browserAgent.lastIndexOf(' ') + 1) <
(OffsetVersion = browserAgent.lastIndexOf('/'))) {
browserName = browserAgent.substring(Offset, OffsetVersion);
browserVersion = browserAgent.substring(OffsetVersion + 1);
if (browserName.toLowerCase() == browserName.toUpperCase()) {
browserName = navigator.appName;
}
}
// Trimming the fullVersion string at
// semicolon/space if present
if ((ix = browserVersion.indexOf(";")) != -1)
browserVersion = browserVersion.substring(0, ix);
if ((ix = browserVersion.indexOf(" ")) != -1)
browserVersion = browserVersion.substring(0, ix);
browserMajorVersion = parseInt('' + browserVersion, 10);
if (isNaN(browserMajorVersion)) {
browserVersion = '' + parseFloat(navigator.appVersion);
browserMajorVersion = parseInt(navigator.appVersion, 10);
}
document.write(''
+ '浏览器名称 = ' + browserName + '<br>'
+ '完整版本号 = ' + browserVersion + '<br>'
+ '主要版本号 = ' + browserMajorVersion + '<br>'
+ 'navigator.appName = ' + navigator.appName + '<br>'
+ 'navigator.userAgent = ' + navigator.userAgent + '<br>'
);
</script>
输出:
以下输出表示针对“Chrome”浏览器的浏览器检测输出
浏览器名称 = Chrome
完整版本号 = 86.0.4240.183
主要版本号 = 86
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/86.0.4240.183
Safari/537.36
以下输出表示针对“Mozilla Firefox”浏览器的浏览器检测输出
浏览器名称 = Firefox
完整版本号 = 5
主要版本号 = 5
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0)
Gecko/20100101
Firefox/80.0
结论: 本文从浏览器检测理论开始,然后解释了浏览器检测方案和检测脚本。在当前环境中,这非常有益,因为所有浏览器都支持此应用程序。因此,首先检测/查找浏览器,然后编写相应的代码。
阅读更多:JavaScript 教程
极客教程