IE浏览器检测的方法

   传统一般都是采用user-agent的检测方式,它检测目标浏览器的确切型号,包括浏览器的名称和版本。其实就是一个字符串,用navigator.userAgen或navigator.appName获取。如下:

  function isIE(){

  return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all;

  }

  function isIE6() {

  return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 6.0")=="-1"?false:true;

  }

  function isIE7(){

  return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 7.0")=="-1"?false:true;

  }

  function isIE8(){

  return navigator.userAgent.split(";")[1].toLowerCase().indexOf("msie 8.0")=="-1"?false:true;

  }

  function isNN(){

  return navigator.userAgent.indexOf("Netscape")!=-1;

  }

  function isOpera(){

  return navigator.appName.indexOf("Opera")!=-1;

  }

  function isFF(){

  return navigator.userAgent.indexOf("Firefox")!=-1;

  }

  function isChrome(){

  return navigator.userAgent.indexOf("Chrome") > -1;

  }

  目前比较流行的检测方式则是通过“对象/特征”来判断浏览器能力的方式。下面的addEvent代码就是使用了该方式。.addEventListener是w3c dom标准方式,而IE使用自己特有attachEvent。

  //添加事件工具函数

  function addEvent(el,type,handle){

  if(el.addEventListener){//for standard browses

  el.addEventListener(type,handle,false);

  }else if(el.attachEvent){//for IE

  el.attachEvent("on"+event,handle);

  }else{//other

  el["on"+type]=handle;

  }

  }

  在举几个列子:

  1、talbe.cells只有IE/Opera支持。

  2、innerText/insertAdjacentHTML除Firefox外,IE6/7/8/Safari/Chrome/Opera都支持。

  3、window.external.AddFavorite用来在IE下添加到收藏夹。

  4、window.sidebar.addPanel用来在Firefox下添加到收藏夹。

  还有一种有趣的检测方式,暂且称为“浏览器缺陷或bug”方式,即某些表现不是浏览器厂商刻意实现的。如下:

  var isIE = !+"v1";

  var isIE = !-[1,];

  var isIE = "v"=="v";

  isSafari=/a/.__proto__=='//';

  isOpera=!!window.opera;

  isIE = "v" == "v" 方式IE9已经修复该bug,不能用此方式判断IE浏览器了(2010-6-29用IE9平台预览第三版测试的)

  最经典的莫过于 !-[1,] 的判断方式,仅仅用了6 bytes判定IE浏览器,创世界最短纪录,这组代码利用了数组[1,]的length。

  IE浏览器检测代码:

  // ----------------------------------------------------------

  // A short snippet for detecting versions of IE in JavaScript

  // without resorting to user-agent sniffing

  // ----------------------------------------------------------

  // If you're not in IE (or IE version is less than 5) then:

  // ie === undefined

  // If you're in IE (>=5) then you can determine which version:

  // ie === 7; // IE7

  // Thus, to detect IE:

  // if (ie) {}

  // And to detect the version:

  // ie === 6 // IE6

  // ie > 7 // IE8, IE9 ...

  // ie < 9 // Anything less than IE9

  // ----------------------------------------------------------

  //UPDATE: Now using Live NodeList idea from @jdalton

  var ie = (function() {

  var undef,

  v = 3,

  div = document.createElement('div'),

  all = div.getElementsByTagName('i');

  while (

  div.innerHTML = '<!--[if gt IE ' + (++v) + ']><![endif]-->',

  all[0]

  );

  return v > 4 ? v : undef;

  })();

  这个代码的意图就是.通过while循环.将条件编译写入到div即页面中,然后直接取注释下的这个元素,直到取不到就退出循环。这样就获得了IE的最终版本,如果不是IE那么就是undefined。

时间: 2024-11-02 08:24:29

IE浏览器检测的方法的相关文章

javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)_javascript技巧

复制代码 代码如下: var EventUtil={ //跨浏览器处理程序---创建方法 addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListneter(type,handler,false); }else if(element.attachEvent){ element.attachEvent("on"+type,handler); }else{ el

js检测访客浏览器类型的方法

在360浏览器检测 <script>document.write(navigator.userAgent.toLowerCase());</script> 输出来 mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0; .net clr 2.0.50727; infopath.2; asktbptv/5.17.0.25589; alexa toolbar) 在ff浏览器下检测显示为 mozilla/5.0 (w

js判断浏览器版本以及浏览器内核的方法

 这篇文章主要介绍了js判断浏览器版本以及浏览器内核的方法,可实现针对各个浏览器的判断,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了js判断浏览器版本以及浏览器内核的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: if (!browser.ie && !browser.mac) { var UA = navigator.userAgent.toLowerCase().toString(); //判断是不是IE内核下的非IE版本 if ((UA.inde

JS获取各种浏览器窗口大小的方法

 本篇文章主要是对JS 获取各种浏览器窗口大小的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 常用: JS 获取浏览器窗口大小   代码如下: // 获取窗口宽度  if (window.innerWidth)  winWidth = window.innerWidth;  else if ((document.body) && (document.body.clientWidth))  winWidth = document.body.clientWidth;  // 获

JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍

 浏览器全屏模式的启动函数requestFullscreen仍然需要附带各浏览器的js方言前缀,相信下面这段代码需要你花大量的搜索才能凑齐:    代码如下: // 判断各种浏览器,找到正确的方法 function launchFullscreen(element) {   if(element.requestFullscreen) {     element.requestFullscreen();   } else if(element.mozRequestFullScreen) {    

javascript-JavaScript 浏览器检测

问题描述 JavaScript 浏览器检测 var agent = window.navigator.userAgent.toLowerCase(); var is_op = (agent.indexOf("opera") != -1); var is_ie = (agent.indexOf("msie") != -1) && document.all && !is_op; var is_ch = (agent.indexOf(&qu

javascript 特性检测并非浏览器检测_javascript技巧

我大致翻译了部分文章,可能有理解错误的地方,敬请指正.值得一提的是,评论部分的争论亦值得一看. 特性检测 起初前端工程师们就极力反对浏览器检测,他们认为类似user-agent嗅探的方法是很不好的,理由是它并不是一种面向未来的代码,无法适应新版的浏览器.更好的做法是使用特性检测,就像这样: 复制代码 代码如下: if (navigator.userAgent.indexOf("MSIE 7") > -1){ //do something } 而更好的做法是这样: 复制代码 代码如

javascript 特性检测并非浏览器检测

javascript 特性检测并非浏览器检测 详细出处参考:.net/article/21834.htm">http://www.111cn.net/article/21834.htm 起初前端工程师们就极力反对浏览器检测,他们认为类似user-agent嗅探的方法是很不好的,理由是它并不是一种面向未来的代码,无法适应新版的浏览器.更好的做法是使用特性检测,就像这样: 复制代码 代码如下: if (navigator.userAgent.indexOf("MSIE 7"

浏览器检测JS代码(兼容目前各大主流浏览器)_javascript技巧

本文实例介绍了JS代码实现浏览器检测,分享给大家供大家参考,具体内容如下 var BrowserMatch = { init: function () { this.browser = this.getBrowser().browser || "An Unknown Browser"; this.version = this.getBrowser().version || "An Unknown Version"; this.OS = this.getOS() ||