我已经能够检测浏览器是否是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,有没有什么办法可以只使用一个正则表达式字符串来实现这个需求?
答案 0 :(得分:0)
你可以尝试这个:
(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:)(\d+)
来源:https://stackoverflow.com/a/19987665/1203816
它应该匹配IE的每个版本,而不仅仅是8和11。 版本号被移位,因此IE 8为4,因此IE将为7。
答案 1 :(得分:0)
我认为浏览器对用户代理的反应不再是个好主意。 IE11的行为更像是webkit,而不是IE8。
如果您使用特殊的Internet Explorer代码,则需要重写它以使用功能检测而不是浏览器检测。
IE10中的IE11 compat模式不适用于IE10(缺少JavaScript中的某些方法)。例如,在这种情况下,浏览器检测将失败。