如何通过javascript比较浏览器版本?
例如,如果脚本想知道用户是否使用Firefox 3.5+
有什么办法吗?
此代码获取Firefox的版本号:
var FFVersion = navigator.userAgent
.substring(navigator.userAgent.indexOf("Firefox"))
.split("/")[1];
您决定如何处理每个人:
window.onload = function() {
if (FFVersion < '3.5') { alert('please upgrade...') }
}
您应该使用object/feature detection以确保在您应用之前有效。从该链接:
虽然浏览器检测对于90%的访问者来说效果都很好,但是一些不起眼的浏览器将无法正确处理,并且在您编写页面后出现的浏览器也可能无法充分覆盖。结果将是错误消息流或在浏览器可以轻松处理时未调用的脚本。在这两种情况下,您都在欺骗最终用户并且编码错误。
要获取浏览器版本,您可以使用Navigator object:
alert(navigator.appName + ' ' + navigator.appVersion);
在javascript中使用navigator.userAgent
你会得到一个像“Mozilla / 5.0(Windows; U; Windows NT 6.1; en-GB; rv:1.9.2)Gecko / 20100115 Firefox / 3.6”的字符串
对于firefox,最后一个数字是版本。
现在这种情况在Firefox达到10.0时失败了。想出一个不同的版本:
// Takes 2 strings "2.3.4.5" and "2.5" and returns less, equal and greater than 0
// depending which one is bigger
function compareVersions(a, b) {
var v1 = a.split('.');
var v2 = b.split('.');
for(var i = 0; i < Math.min(v1.length, v2.length); i++) {
var res = v1[i] - v2[i];
if (res != 0)
return res;
}
return 0;
}
将版本字符串解析为float类型,然后将它们与if语句或任何您想要的内容进行比较。 这是我用于检查IE浏览器版本的示例:
if(parseFloat($.browser.version) <= 8.0)
{
// Do whatever you want if browser version lower than equal to 8.0
}
else
{
// Do whatever you want if browser greater than 8.0
}