PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 网页制作 >> Javascript >> 

检测访客浏览器的2种方法

检测访客浏览器的2种方法

来源:PHP程序员站  作者:PHP程序员站  发布时间:2011-06-27
我想,大凡真正写过网页的人都有被IE折磨过的历史,对IE,尤其是IE 6已经恨之入骨,可能大家跟我都有这样一个梦想:IE绝迹了多好!可惜这只能停留在幻想的阶段。 为了把 Internet Explorer 给揪出来,我们需要检测访客的浏览器Browser类型。例如,你制作的网页在 Inter

我想,大凡真正写过网页的人都有被IE折磨过的历史,对IE,尤其是IE 6已经恨之入骨,可能大家跟我都有这样一个梦想:IE绝迹了多好!可惜这只能停留在幻想的阶段。

为了把 Internet Explorer 给揪出来,我们需要检测访客的浏览器Browser类型。例如,你制作的网页在 Internet Explorer 中无法正常运行,或者你已经对 Internet Explorer 完全死心了,这时你可以阻止 Internet Explorer 用户访问你的网站,如ProjeKt D.K is loading,作者并不欢迎你使用 IE 浏览他的网站,所以你还是换个浏览器吧。

当然了,完全阻止IE用户访问的做法还是太极端了,有时候我们只是想限制或只允许IE用户访问某部分的内容,如:只给使用 IE 的用户显示广告。那怎样达到我们的目的呢?目前我知道的有两种,一种是用 JS 检测,另一种是使用PHP,第一种的适用范围更广些。

一、JS浏览器检测

检测浏览器及版本

<html>
<body>
<script type="text/javascript">
var browser=navigator.appName
var b_version=navigator.appVersion
var version=parseFloat(b_version)
document.write("浏览器名称:"+ browser)
document.write("<br />")
document.write("浏览器版本:"+ version)
</script>
</body>
</html>

检测浏览器的更多信息

<html>
<body>
<script type="text/javascript">
document.write("<p>浏览器:")
document.write(navigator.appName + "</p>")

document.write("<p>浏览器版本:")
document.write(navigator.appVersion + "</p>")

document.write("<p>代码:")
document.write(navigator.appCodeName + "</p>")

document.write("<p>平台:")
document.write(navigator.platform + "</p>")

document.write("<p>Cookies 启用:")
document.write(navigator.cookieEnabled + "</p>")

document.write("<p>浏览器的用户代理报头:")
document.write(navigator.userAgent + "</p>")
</script>
</body>
</html>

检测浏览器的全部信息

<html>
<body>

<script type="text/javascript">
var x = navigator;
document.write("CodeName=" + x.appCodeName);
document.write("<br />");
document.write("MinorVersion=" + x.appMinorVersion);
document.write("<br />");
document.write("Name=" + x.appName);
document.write("<br />");
document.write("Version=" + x.appVersion);
document.write("<br />");
document.write("CookieEnabled=" + x.cookieEnabled);
document.write("<br />");
document.write("CPUClass=" + x.cpuClass);
document.write("<br />");
document.write("OnLine=" + x.onLine);
document.write("<br />");
document.write("Platform=" + x.platform);
document.write("<br />");
document.write("UA=" + x.userAgent);
document.write("<br />");


document.write("BrowserLanguage=" + x.browserLanguage);
document.write("<br />");
document.write("SystemLanguage=" + x.systemLanguage);
document.write("<br />");
document.write("UserLanguage=" + x.userLanguage);
</script>

</body>
</html>

根据浏览器类型提醒用户

<html>
<head>
<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName
var b_version=navigator.appVersion
var version=parseFloat(b_version)
if ((browser=="Netscape"||browser=="Microsoft Internet Explorer") && (version>=4))
  {alert("您的浏览器够先进了!")}
else
  {alert("是时候升级您的浏览器了!")}
}
</script>
</head>

<body onload="detectBrowser()">
</body>

</html>


使用 JavaScript 检测关于访问者的浏览器名称及其版本,然后根据这些信息生成不同内容的警告框。
     虽然上面提供的JS很高明,但是也只能判断IE与非IE,因为如果你使用的 firefox 或者 chrome ,获得的浏览器名称统统都是 Netscape,那有没有更好的办法呢?方法当然有,其实可以用以下代码实现:

<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 后的代码。下面提供的几个典型的浏览器判断语句:
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"]来检测浏览器类型。以下是一个范例。
 <html>
<head>
    <title>PHP 浏览器检测</title>
</head>
<body>
<?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE") ) : ?>

<!-- 这里就填上你要在IE中执行的html代码吧 -->

<?php endif; ?>
</body>
</html>

其他几个if判断语句:
 <?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> 之前加上以下代码即可:

 <?php if(strstr($_SERVER["HTTP_USER_AGENT"], "MSIE 6.0") ) : ?> 
<script type="text/javascript">
  alert("还在用Internet Explorer 6 ? 你OUT了,赶快升级吧!")
</script>
<?php endif; ?>


延伸阅读:
php检测域名是否被注册事例
用php来检测proxy
利用js检测浏览器分辨率,来调用相应的CSS
php通过文件头检测文件类型
PHP版UTF-8文件BOM自动检测移除程序
PHP 检测手机浏览器的代码
12道PHP类型检测题目
javascript检测浏览器方法
jQuery 对ie6的版本检测错误及修正方法
javascript检测浏览器类型和版本
检测低版本IE6提示访问者浏览者升级浏览器的javascript提示代码
javascrtip检测浏览器语言,并跳转页面
Tags: 检测   访客   浏览器  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号