由于 $.browser 现在已从 jQuery 的 1.9 中删除,我正在寻找检测浏览器的类似方法吗?
尝试使用 php 的 get_brower,但它总是返回为“默认浏览器”。
更新:我查看了 jquery.support 并没有为我提供任何有用的信息
改用特征检测(参见 jQuery.support)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
然后选择 case's 或 if's 或正则表达式的结果为你想要的。
正如您所指出的,通过 userAgent 搜索可能不可靠。但基本上,如果您不想使用特征检测,这就是您必须做的。其余的已经在这里说了
我也想念 jQuery 的 $.browser 检测。虽然我知道 $.support 在许多情况下更有意义,但我最初使用浏览器检测来获取 css 前缀属性,这在应用条件样式时更有意义,而不是使用所有 3 个前缀。或者甚至为完全基于 IE 版本的 IE 6-9 添加 -pie- 前缀。
这是我将使用的函数的模型,改编自 jQuery 已弃用的 $.browser,如果有帮助的话。
nav = navigation;
nav.detectBrowser = function() {
var t = this,
a = this.userAgent.toLowerCase(),
match = /(chrome)[ \/]([\w.]+)/.exec(a) ||
/(webkit)[ \/]([\w.]+)/.exec(a) ||
/(firefox)[ \/]([\w.]+)/.exec(a) ||
/(msie) ([\w.]+)/.exec(a) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a) ||
a.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a) || [];
t.browser = match[1] || false;
t.version = match[2] || "0";
if (t.browser) t[match[1]] = true;
if (t.msie)
t.ie = parseInt(t.version);//ie main version or false if not IE
else if (t.chrome)
t.webkit = true;//chrome is webkit
else if (t.webkit)
t.safari = true;
t.pre = t.webkit ? '-webkit-' : t.firefox ? '-moz-' : t.ie > 7
? '-ms-' : t.opera ? '-o-' : '';//css prefix
}
nav.detectBrowser();
请注意,我使用 window.navigation 全局对象作为示例,您的旧 $.browser 对象现在将是“nav”或“window.nav”。nav.pre 是 css3 功能的浏览器前缀,如果是 IE,nav.ie 是 Internet Explorer 版本的整数。
您可以像这样检测 Internet Explorer:
<!--[if IE]>
<![endif]-->
可以使用此工具检测移动浏览器:http: //detectmobilebrowsers.com/