文章转载自: http://www.ludou.org/2-way-to-detect-browser.html
为了把 Internet Explorer 给揪出来,我们需要检测访客的浏览器Browser类型。例如,你制作的网页在 Internet Explorer 中无法正常运行,或者你已经对 Internet Explorer 完全死心了,这时你可以阻止 Internet Explorer 用户访问你的网站,如ProjeKt D.K is loading,作者并不欢迎你使用 IE 浏览他的网站,所以你还是换个浏览器吧。
当然了,完全阻止IE用户访问的做法还是太极端了,有时候我们只是想限制或只允许IE用户访问某部分的内容,如:只给使用 IE 的用户显示广告。那怎样达到我们的目的呢?目前我知道的有两种,一种是用 JS 检测,另一种是使用PHP,第一种的适用范围更广些。
一、JS浏览器检测
首先给出w3school提供的 JS 检测方法:
- 检测浏览器及版本
- 使用 JavaScript 检测关于访问者的浏览器名称及其版本。
- 检测浏览器的更多信息
- 使用 JavaScript 检测关于访问者浏览器的更多信息。
- 检测浏览器的全部信息
- 使用 JavaScript 检测关于访问者浏览器的全部信息。
- 根据浏览器类型提醒用户
- 使用 JavaScript 检测关于访问者的浏览器名称及其版本,然后根据这些信息生成不同内容的警告框。
虽然上面提供的JS很高明,但是也只能判断IE与非IE,因为如果你使用的 firefox 或者 chrome ,获得的浏览器名称统统都是 Netscape,那有没有更好的办法呢?方法当然有,其实可以用以下代码实现:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<html>
<head> <title>JavaScript检测浏览器</title> </head> <body> <script type="text/javascript"> var userAgent=navigator.userAgent.toLowerCase(), s, o = {}; var browser={ version:(userAgent.match(/(?:firefox|opera|safari|chrome|msie)[\/: ]([\d.]+)/))[1], safari:/version.+safari/.test(userAgent), chrome:/chrome/.test(userAgent), firefox:/firefox/.test(userAgent), ie:/msie/.test(userAgent), opera: /opera/.test(userAgent ) } /* 获得浏览器的名称及版本信息 */ if (browser.ie && browser.version > 6) { /* 判断是否为IE 6以上版本,是则执行以下操作 */ document.writeln("<p>您使用的是IE "+browser.version+"<\/p>"); } </script> </body> </html> |
通过以上代码的注释,你也大概知道怎么了吧。注意:if中的browser.version > 6版本判断只能用于 IE,其他浏览器的版本不能这么判断,目前还找不到一个解决的办法。如果你想让if判断成功后执行一段 html 代码,那么你可以在if后面的{}中填上 html 转换成 js 后的代码。下面提供的几个典型的浏览器判断语句:
1
2 3 4 5 |
if (browser.safari) {} /* 判断是否为safari */
if (browser.firefox) {} /* 判断是否为firefox */ if (browser.chrome) {} /* 判断是否为chrome */ if (browser.opera) {} /* 判断是否为opera */ if (browser.ie) {} /* 判断是否为IE */ |
二、PHP 浏览器检测
使用 PHP,我们可以通过$_SERVER["HTTP_USER_AGENT"]来检测浏览器类型。以下是一个范例。
1
2 3 4 5 6 7 8 9 10 11 12 |
<html>
<head> <title>PHP 浏览器检测</title> </head> <body> <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") ) : ?> <!-- 这里就填上你要在IE中执行的html代码吧 --> <?php endif; ?> </body> </html> |
其他几个if判断语句:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE 8.0") ) : ?>
/* IE 8 */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE 7.0") ) : ?> /* IE 7 */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE 6.0") ) : ?> /* IE 6 */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "NetCaptor") ) : ?> /* Netscape */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Netscape") ) : ?> /* Netscape */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Lynx") ) : ?> /* Lynx */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Opera") ) : ?> /* Opera */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Konqueror") ) : ?> /* Konqueror */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Mozilla/5.0") ) : ?> /* Mozilla/5.0 */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Firefox") ) : ?> /* Firefox */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Firefox/3") ) : ?> /* Firefox 3.0*/ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Firefox/2") : ?> /* Firefox 2.0 */ <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "Chrome") : ?> /* Chrome */ |
下面给个小小的应用。我们可以给 IE 6.0 的访客弹出一个警告窗口,在 </body> 之前加上以下代码即可:
1
2 3 4 5 |
<?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE 6.0") ) : ?>
<script type="text/javascript"> alert("还在用Internet Explorer 6 ? 你OUT了,赶快升级吧!") </script> <?php endif; ?> |
好了,我知道的也就这么多了,能分享的也跟大家分享了,希望在大家以后的网站建设中能有所帮助。另外,如果你还有不明白的地方,可以在此发表评论,能够解决的我一定帮助解决。
参考资料: