我正在尝试做一些php浏览器测试。当我看着
$_SERVER['HTTP_USER_AGENT'
我发现它返回了这个:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
即使我在IE 11上。
当我在Chrome上时,它返回了这个:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
哪个更有意义。为什么IE中没有MSIE,我该如何定位?
答案 0 :(得分:5)
"Trident"是MSIE 11的布局引擎。正如您所看到的那样,当您使用IE 11时,它加载为Trident/7.0; rv:11.0)
就像您在Chrome上一样,它加载为{{1} }。
如果您希望获得有关浏览器的更多信息,可以随时使用PHP的get_browser()功能。
答案 1 :(得分:1)
因为8的MSIE标志着它的版本通过TRIDENT。我早就找到了这个脚本。它还会检测浏览器是否处于兼容模式。它可能对你有所帮助,但它在JS:
编辑:通过简单的搜索,我在github找到了原始代码。
var ieUserAgent = {
init: function () {
// Get the user agent string
var ua = navigator.userAgent;
this.compatibilityMode = false;
// Detect whether or not the browser is IE
var ieRegex = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (ieRegex.exec(ua) == null)
this.exception = "The user agent detected does not contain Internet Explorer.";
// Get the current "emulated" version of IE
this.renderVersion = parseFloat(RegExp.$1);
this.version = this.renderVersion;
// Check the browser version with the rest of the agent string to detect compatibility mode
if (ua.indexOf("Trident/7.0") > -1) {
if (ua.indexOf("MSIE 7.0") > -1) {
this.compatibilityMode = true;
}
this.version = 11; // IE 11
}
else if (ua.indexOf("Trident/6.0") > -1) {
if (ua.indexOf("MSIE 7.0") > -1) {
this.compatibilityMode = true;
}
this.version = 10; // IE 10
}
else if (ua.indexOf("Trident/5.0") > -1) {
if (ua.indexOf("MSIE 7.0") > -1) {
this.compatibilityMode = true;
}
this.version = 9; // IE 9
}
else if (ua.indexOf("Trident/4.0") > -1) {
if (ua.indexOf("MSIE 7.0") > -1) {
this.compatibilityMode = true;
}
this.version = 8; // IE 8
}
else if (ua.indexOf("MSIE 7.0") > -1)
this.version = 7; // IE 7
else
this.version = 6; // IE 6
}
};
// Initialize the ieUserAgent object
ieUserAgent.init();
$(document).ready(function() {
if(ieUserAgent.compatibilityMode) {
//do stuff
}
if(ieUserAgent.version == 6) {
//do stuff
}
});
答案 2 :(得分:1)
IE11删除用户代理字符串的“MSIE”部分。它不会就此止步 - navigator.appName
将返回Netscape
而navigator.product
会返回Gecko
。
可能的原因是IE11已经赶上了现代网络标准,微软不希望它在整个网络上触发旧的if(IE) { // shitty simpler website }
处理程序。他们希望看到Chrome / Firefox看到的同样功能齐全的版本。