在WordPress主题开发的过程中,我们需要根据浏览器的不同,针对某些老旧的浏览器(IE浏览器)写一些 CSS,以解决兼容性问题,WordPress 为我们提供了判断网站访客使用的浏览器的全局变量,这些变量返回的是一个布尔值。
WordPress 提供的判断用户浏览器的全部变量
$is_iphone (boolean) iPhone Safari
$is_chrome (boolean) 谷歌浏览器
$is_safari (boolean) Safari 浏览器
$is_NS4 (boolean) Netscape 浏览器
$is_opera (boolean) Opera 浏览器
$is_macIE (boolean) Mac 平台的IE浏览器
$is_winIE (boolean) Windows 平台的IE浏览器
$is_gecko (boolean) FireFox 浏览器
$is_lynx (boolean) Linux 系统中的纯文本浏览器
$is_IE (boolean) Internet Explorer
为什么没有诸如:360,搜狗这些国产浏览器呢?因为这些浏览器使用的是所谓的 IE、谷歌浏览器双内核,根据使用的模式不同会被判断成谷歌或者 IE 浏览器。
怎么判断 IE 浏览器的版本?
上面的代码,可以判断用户使用的是哪个浏览器?但是却判断不了用户使用的浏览器的版本,得益于方便的更新机制,其他浏览器一般都会更新到最新版本,和最新版本最近的几个版本的渲染表现也都差不多。IE 浏览器一直是奇葩,现存的 IE 浏览器从 IE6 到 IE11,每个版本的表现都千差万别,所以判断一下IE浏览器的版本是非常有必要的。因为 WordPress 没有提供判断 IE 浏览器版本的函数,所以,我们只能自己动手了。
$browser = $_SERVER['HTTP_USER_AGENT'];
$browser = substr( "$browser", 25, 8);
if ($browser == "MSIE 7.0" ) {
$classes[] = 'ie7';
$classes[] = 'ie';
} elseif ($browser == "MSIE 6.0" ) {
$classes[] = 'ie6';
$classes[] = 'ie';
} elseif ($browser == "MSIE 8.0" ) {
$classes[] = 'ie8';
$classes[] = 'ie';
} elseif ($browser == "MSIE 9.0" ) {
$classes[] = 'ie9';
$classes[] = 'ie';
} else {
$classes[] = 'ie';
}
把我们可以把判断出来的浏览器版本写入到页面的 body 标签中,然后针对某个有 Bug 的浏览器专门写 CSS,等这个浏览器彻底从互联网上消失了,直接把针对这个浏览器写的样式删除掉就可以了。这样做的好处是减少了CSS 的 Hack,后期维护起来也轻松了很多。