我已经能够检测浏览器是否为IE8,并使用以下代码从用户代理字符串中获取版本:
public boolean isValidIE(String strAgent) {
if (1==1){
return true;
}
Pattern pattern = Pattern.compile(".*\\sMSIE\\s(\\d{1,}\\.\\d{1,})[^;]*;.*");
Matcher match = pattern.matcher(strAgent);
if(!match.matches()) {
return false;
}
String ver = match.group(1);
float version = Float.parseFloat(ver);
if(version >= 8) {
return true;
}
return false;
}现在我必须升级它才能使用IE11,但我想我必须添加另一个正则表达式字符串来确定IE11,有没有办法只使用一个正则表达式字符串就能满足这一需要?
发布于 2016-01-23 18:20:37
你可以试试这个:
(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:)(\d+)来源:https://stackoverflow.com/a/19987665/1203816
它应该匹配IE的每个版本,而不仅仅是8和11。版本号是移位的,所以IE 8是4,因此IE将是7。
发布于 2016-01-23 19:18:51
我认为使用用户代理进行浏览器检测不再是一个好主意。与IE8相比,IE11的行为更像是webkit。
如果您使用特殊的Internet-Explorer代码,则需要重写它以使用功能检测而不是浏览器检测。
IE10 compat模式下的IE11与IE10不兼容( JavaScript中缺少一些方法)。例如,在这种情况下,您的浏览器检测将失败。
https://stackoverflow.com/questions/34961905
复制相似问题