[Web开发] 检测IE版本号的方法总结

简介:
检测浏览器(比如IE)的版本号码是Web 开发最常遇到的问题之一, 以下总结几种检测IE版本号码的方法:
通过Javascript解释浏览器的 User-Agent 字符串:

view plaincopy to clipboardprint?
function getInternetExplorerVersion()   
// Returns the version of Internet Explorer or a -1   
// (indicating the use of another browser).   
{   
  var rv = -1; // Return value assumes failure.   
  if (navigator.appName == 'Microsoft Internet Explorer')   
  {   
    var ua = navigator.userAgent;   
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");   
    if (re.exec(ua) != null)   
      rv = parseFloat( RegExp.$1 );   
  }   
  return rv;   
}   
function checkVersion()   
{   
  var msg = "You're not using Internet Explorer.";   
  var ver = getInternetExplorerVersion();   
  
  if ( ver > -1 )   
  {   
    if ( ver >= 8.0 )    
      msg = "You're using a recent copy of Internet Explorer."  
    else  
      msg = "You should upgrade your copy of Internet Explorer.";   
  }   
  alert( msg );   
}  
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();
  if ( ver > -1 )
  {
    if ( ver >= 8.0 ) 
      msg = "You're using a recent copy of Internet Explorer."
    else
      msg = "You should upgrade your copy of Internet Explorer.";
  }
  alert( msg );
}
通过Javascript判断IE渲染引擎的的当前渲染模式:
view plaincopy to clipboardprint?
engine = null;   
if (window.navigator.appName == "Microsoft Internet Explorer")   
{   
   // This is an IE browser. What mode is the engine in?   
   if (document.documentMode) // IE8   
      engine = document.documentMode;   
   else // IE 5-7   
   {   
      engine = 5; // Assume quirks mode unless proven otherwise   
      if (document.compatMode)   
      {   
         if (document.compatMode == "CSS1Compat")   
            engine = 7; // standards mode   
      }   
   }   
   // the engine variable now contains the document compatibility mode.   
}  
engine = null;
if (window.navigator.appName == "Microsoft Internet Explorer")
{
   // This is an IE browser. What mode is the engine in?
   if (document.documentMode) // IE8
      engine = document.documentMode;
   else // IE 5-7
   {
      engine = 5; // Assume quirks mode unless proven otherwise
      if (document.compatMode)
      {
         if (document.compatMode == "CSS1Compat")
            engine = 7; // standards mode
      }
   }
   // the engine variable now contains the document compatibility mode.
}
通过ASP.NET 的 HttpBrowserCapabilities 对象:

view plaincopy to clipboardprint?
private float getInternetExplorerVersion()   
{   
  // Returns the version of Internet Explorer or a -1   
  // (indicating the use of another browser).   
  float rv = -1;   
  System.Web.HttpBrowserCapabilities browser = Request.Browser;   
  if (browser.Browser == "IE")   
    rv = (float)(browser.MajorVersion + browser.MinorVersion);   
  return rv;   
}   
  
private void Page_Load(object sender, System.EventArgs e)   
{   
  string msg;   
  double ver = getInternetExplorerVersion();   
  if (ver > 0.0)   
  {   
    if (ver >= 7.0)    
      msg = "You're using a recent version of Internet Explorer.";   
    else  
      msg = "You should upgrade your copy of Internet Explorer.";   
  }    
  else  
    msg = "You're not using Internet Explorer.";   
  
  Label1.Text = msg;   
}  
private float getInternetExplorerVersion()
{
  // Returns the version of Internet Explorer or a -1
  // (indicating the use of another browser).
  float rv = -1;
  System.Web.HttpBrowserCapabilities browser = Request.Browser;
  if (browser.Browser == "IE")
    rv = (float)(browser.MajorVersion + browser.MinorVersion);
  return rv;
}
private void Page_Load(object sender, System.EventArgs e)
{
  string msg;
  double ver = getInternetExplorerVersion();
  if (ver > 0.0)
  {
    if (ver >= 7.0) 
      msg = "You're using a recent version of Internet Explorer.";
    else
      msg = "You should upgrade your copy of Internet Explorer.";
  } 
  else
    msg = "You're not using Internet Explorer.";
  Label1.Text = msg;
}

通过HTML的扩展注释语句:

view plaincopy to clipboardprint?
<!--[if gte IE 8]>  
<p>You're using a recent version of Internet Explorer.</p>  
<![endif]-->  
  
<!--[if lt IE 7]>  
<p>Hm. You should upgrade your copy of Internet Explorer.</p>  
<![endif]-->  
  
<![if !IE]>  
<p>You're not using Internet Explorer.</p>  
<![endif]>  
<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->
<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->
<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>
 
有些方法在之前的blog文章提过
MSDN参考文章:(1), (2)

 


 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273650,如需转载请自行联系原作者

相关文章
|
6天前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
20 1
|
3天前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践
|
4天前
|
前端开发 JavaScript 持续交付
Web应用开发的方法
Web应用开发的方法
7 1
|
4天前
|
前端开发 JavaScript 持续交付
web应用开发
web应用开发
10 1
|
6天前
|
Web App开发 数据采集 iOS开发
「Python+Dash快速web应用开发」
这是「Python+Dash快速web应用开发」系列教程的第十六期,本期将介绍如何在Dash应用中实现多页面路由功能。通过使用`Location()`组件监听URL变化,并结合回调函数动态渲染不同页面内容,使应用更加模块化和易用。教程包括基础用法、页面重定向及无缝跳转等技巧,并通过实例演示如何构建个人博客网站。
18 2
WK
|
3天前
|
数据采集 API 开发者
很少有人用python开发web???
Python 是一种流行且广泛使用的编程语言,尤其在 Web 开发领域。它凭借简洁的语法、丰富的框架(如 Django 和 Flask)、强大的库支持及活跃的社区,成为许多开发者和企业的首选。Python 的易学性、高效性及广泛的应用场景(包括 Web API、微服务和数据分析等)使其在 Web 开发中占据重要地位,并将持续发挥更大作用。
WK
14 0
|
7天前
|
数据库 开发者 Java
数据战争:Hibernate的乐观与悲观锁之争,谁将主宰并发控制的王座?
【8月更文挑战第31天】在软件开发中,数据一致性至关重要,尤其是在多用户并发访问环境下。Hibernate 作为 Java 社区常用的 ORM 框架,提供了乐观锁和悲观锁机制来处理并发问题。乐观锁假设数据不易冲突,通过版本号字段 (`@Version`) 实现;悲观锁则假定数据易冲突,在读取时即加锁。选择哪种锁取决于具体场景:乐观锁适合读多写少的情况,减少锁开销;悲观锁适合写操作频繁的场景,避免数据冲突。正确应用这些机制可提升应用程序的健壮性和效率。
17 0
|
7天前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
15 0
|
7天前
|
前端开发 开发者 安全
JSF面向对象设计,让你轻松应对复杂业务需求,Web应用开发不再难!
【8月更文挑战第31天】在现代Web应用开发中,JSF(JavaServer Faces)框架凭借其强大的面向对象编程能力广泛应用于数据绑定和事件处理。数据绑定机制使前端与后端模型解耦,提高代码维护性和类型安全性;事件处理机制则增强了应用灵活性并进一步降低耦合度。本文通过示例代码展示了JSF的这些特性及其优势,帮助开发者更好地利用JSF构建高效、灵活的Web应用。然而,JSF也存在组件库较小和学习成本较高的局限,需根据具体需求权衡使用。
17 0
|
7天前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
13 0
下一篇
DDNS