当前位置 > 首页 > Asp.net

判定IE的各个版本

1/16/2010 1:32:00 PM来源:Asp.net

阅读: 76 评论: 1 作者: 司徒正美 发表于 2010-01-16 12:51 原文链接

主要使用IE各个阶段实现的一些方法,从中也可以看出IE的发展史。暂时提供到IE4的判定。

var isIE = window.ActiveXObject;
var isVersion = document.querySelectorAll ? 8.0 :
	              window.XMLHttpRequest  ? 7.0 :
	              document.compatMode    ? 6.0 :
	              (0).toFixed                    ? 5.5 :
	              document.getElementById? 5.0 : 
                      document.all                  ? 4.0 :0;

IE5支持getElementById真是一个伟大的创举。新事物的出现总是引起话题,想起我的javascript启蒙书《Javascript DOM编程艺术》,里面的代码总是少不了判定是否支持getElementById……从此IE5走向辉煌,把网景推向地狱的深渊。IE5发布于1998年9月,从此所有主流浏览器都支持getElementById。

网上找到让IE4支持getElementById的代码,javascript的动态解析立功了。

      var ie4=document.all && !document.getElementById;
      if(ie4) {
        document.getElementById = new Function('var expr = /^\\w[\\w\\d]*$/, elname=arguments[0]; if(!expr.test(elname)) { return null; } else if(eval("document.all."+elname)) { return eval("document.all."+elname); } else return null;')
      }

还有getElementsByTagName的实现:

function ie_getElementsByTagName(str) {
 if (str=="*")
  return document.all
 else
  return document.all.tags(str)
}

if (document.all)
 document.getElementsByTagName = ie_getElementsByTagName

很明显如果这些方法得到内置的原生支持,工作效率会大大提升,像jQuery的选择器之于querySelectorAll。IE5可能是当年内置方法与私有实现最多的浏览器,因此它赢得很彻底(抛开捆绑的原因)。内置方法越多,那么对于创建类库的工作就越轻松,从那时开始javascript的类库也多起来了。时至今日,javascript挟以jQuery的东风,越来越受到人重视。加之,西方人对后端javascript的研究,W3C许多惊人的草案的实现,微软加快对标准的支持,谷歌V8的javascript引擎与OS的咄咄逼人,我们一同期待IE9盛世的到来吧。

评论: 1 查看评论 发表评论


最新新闻:
· 美博客评出十大亟待改进IT产品:IE居首(2010-01-16 13:25)
· Kindle扩展平台:美国以外用户可上传销售电子书(2010-01-16 13:23)
· 微软Bing搜索引擎市场份额连续7个月温和增长(2010-01-16 10:03)
· 应用程序开发者透露:iPhone OS 4.0面世“就在眼前”(2010-01-16 10:02)
· 微软将向海地提供至少125万美元援助(2010-01-16 07:42)

编辑推荐:Google、百度和谷歌的那些事

网站导航:博客园首页  个人主页  新闻  闪存  小组  博问  社区  知识库



  • 本周ASP.NET英文技术文章推荐[07/08- 07/14]

    7/13/2007 11:35:00 PM

    摘要: 本期共有8篇文章: 1. VS 2008对嵌套母板页面提供支持 2. 我的JSON编辑器 3. 理解ASP.NET 2.0中的压缩和解压缩 4. 使用微软

  • 一件被误导很久的事:关于new和delete

    6/25/2009 8:53:00 PM

    我的c语言是看谭老的书入门的,实际上,我作为程序员看的第一本技术书籍就是他的c语言教程。谭老的书通俗易懂,对普及编程技术做出巨大贡献,我还是非常敬佩他的。但是,他写的那本c++的书实在是有些硬伤,比

  • 【十五分钟Talkshow】在.NET应用程序中访问Excel的几种方式

    2/28/2012 7:18:00 PM

    摘要提示: 通过三个视频,我介绍和比较了在.NET应用程序中访问Excel的常见几种方式 }通过Excel API访问 }通过OpenXML访问 }通过第三方组件访问

  • WCF分布式开发常见错误(19):There was an error opening the queue打开消息队列出错

    6/17/2009 1:04:00 AM

    在调试托管宿主 WCF MSMQ消息队列代码的时候出现错误: There was an error opening the queue. Ensure that MSMQ is instal

  • .net问题(菜鸟提问)

    12/28/2010 11:11:00 AM

    dropdownlist 里面选中一个选项 得到 selectedValue == F00 后续需要使用的值并不是F00,而是F01,F02,F03 不知该如何写

  • 事件和监听器

    6/22/2009 1:12:00 AM

    前言 事件监听器是经常可以遇到的一种设计模式,一般用在这样一种场景下:当模块的一部分A在完成后需要通知其他的软件模块B,而等待通知的模块B在事先不需要采用轮询的方式来查看另一个模块A是否通知自

  • re: 洗衣除渍的窍门

    2/28/2007 5:04:00 AM

    我有一件白色羊毛衣服被深色牛仔裤漂染了,要怎么处理呢? 我的e-mail是: wrigley@163.com 知道的朋友请告诉我,谢谢! 绮绮 2007-02-27 23:58

  • MVVM frameworks galore

    11/11/2009 11:38:00 PM

    The MVVM pattern (Model-View-ViewModel, also known as M-V-VM, the PresentationModel pattern, or

  • WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)

    9/28/2009 3:01:00 AM

    摘要: 今天学习WCF分布式开发步步为赢系列的15节:错误契约(FaultContract)与异常处理(ExceptionHandle)。本节内容作为WCF分布式开发的一个重要知识点,无论在学

  • Team Foundation Server 用户管理(工作组中)

    6/10/2007 12:21:00 PM

    使用 TFS 有一段时间了,觉得 TFS 的用户管理颇有些道道,下面记录一下发现与心得。 首先,TFS 并没有创建“自己的”用户的功能。这好像不可思议,但却确确实实: