有关IE版本检测

2012-01-01

0

PS:检测浏览器虽然不是一个什么好的做法,但是有时候还是很必要的。

见得最多的就是检测navigator.userAgent(这个可以面向所有浏览器,略过)。

另外一种就是IE的条件注释,这篇有个比较详细的说明

http://www.cnblogs.com/JustinYoung/archive/2009/03/02/ie-jiaojianzhushi.html,注意看它下面的回复

var ieVersion = (function(){ return document.getElementById('ieVersion')})();

以此类推,可以获得各个版本的信息,甚至可以添加gt,gte等,从而一次判定一类版本。

关于这种写法,有个例子就是:

于是在CSS里面就可以不用别的hack了,从而避免在IE里面多加载一次CSS,

直接.ie6 xx{}.ie7 xx{}.ie8 xx{}xx{}

第二、既然可以写在页面内,当然也可以JS来动态生成。我google了一把,发现还真有人这么做的。

文章地址如下:http://www.cnblogs.com/bruceli/archive/2011/04/11/2012470.html,写得还比较详细,原理也很简单。

不过这样的缺憾就是把条件注释限定到JS上了,于CSS就是鸡肋了。

继续,既然可以动态生成条件注释来辨明IE版本,基于IE的CSS hack,应该也可以动态生成一段html片段,用样式值来判定版本。

下面是最容易想到的形式,我测试发现这么确实可以,不过也发现了一个问题,看下面的一段代码:

测试

var test_1 = document.getElementById('test_1');

var test_2 = document.createElement('div');

test_2.innerHTML = '测试';

console.log('test_1:' + test_1.firstChild.style.color + '----' + 'test_2:' + test_2.firstChild.style.color);

在IE9下结果:LOG: test_1:yellow----test_2:yellow

在IE8下结果:LOG: test_1:#ff6600----test_2:#ff6600

在IE7下结果:LOG: test_1:green----test_2:blue

在IE6下结果:test_1:blue ----test_2:blue (IE6没有console.log,所以上面的console.log需要换成alert)

上面的问题大家应该看出来了,IE7下两种情况不一致,不知道是我的IE7兼容模式的问题还是别的什么原因,知道的请指教。

确认代码:

原始

var test = document.createElement('div');

test.innerHTML = '动态生成';

document.body.appendChild(test);

IE7结果:

IE6结果:

基本原理和IE的条件注释差不多,我们一次检测color值就可以了,所以改变一下上面的例子就是:

测试

var test_1 = document.getElementById('test_1');

//var test_2 = document.createElement('div');

//test_2.innerHTML = '测试';

var c = test_1.firstChild.style.color;

alert(c=='red'?'other':c=='yellow'?'IE9':c=='#ff6600'?'IE8':c=='green'?'IE7':'IE6');

在IE9下结果:IE9

在IE8下结果:IE8

在IE7下结果:IE7

在IE6下结果:IE6

按理来说,对于FF,Chrome/Safari、opera都可以利用-moz、-webkit、-o等私有前缀来辨别,不过对于属性的选取要斟酌,类似color是不行的。

这个检测方法旁门左道而已,未来版本或者其他浏览器是不是有这个bug也不确定,而且IE7的那个bug我还没有弄清楚,所以也就暂时知道可以这么做就可以了。

转载请注明来自小西山子【http://www.cnblogs.com/xesam/】

本文地址:http://www.cnblogs.com/xesam/archive/2012/01/01/2309483.html

0

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

java 检测ie版本更新_[Java教程]有关IE版本检测_星空网相关推荐

  1. java 检测网络连接,使用java检测网络连接情况

    使用java检测网络连接状况 windows中可以通过在cmd中使用ping命令来检测网络连接状况,如下: 网络连接正常时: 网络未连接时: 在java中可以通过调用ping命令来判断网络是否连接正常 ...

  2. java检测json格式对错,Java检测文本是否符合Json格式

    目前无论是Gson还是fastjson等等,市面上的json工具包都没有检测文本是否符合Json格式的直接函数. 所以我就自己写一个函数来实现这个简单的需求. 原理很简单,只需要把这个文本转化成Obj ...

  3. 通达信 python插件选股_期货市场教程第七版_使用python在通达信里面选股

    We are a company with an unwavering focus on the customer- first and foremost. In the ever-changing ...

  4. win10无法检测java_win10下配置JAVA环境变量(以及错误: 找不到或无法加载主类的处理方法)...

    系统:win10 pro  14393; 第一步:下载JDK文件(对应自己系统下对应版本)去oracle官网:http://www.oracle.com/technetwork/java/javase ...

  5. java抓取网页标题内容_[Java教程]java 网页页面抓取标题和正文

    [Java教程]java 网页页面抓取标题和正文 0 2014-07-10 09:01:30 import java.io.BufferedReader;import java.io.IOExcept ...

  6. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  7. Java课设对对碰_第11章对对碰游戏(图形版)(Java游戏编程原理与实践教程课件).ppt...

    游戏界面和相关图片素材 11.3 程序设计的步骤 11.3.1 设计游戏窗口类(GameRoom.java) 游戏窗口类GameRoom实现游戏全部功能,继承JFrame组件实现的.是由上方Panel ...

  8. 李兴华java视频在线观看_李兴华Java开发实战经典视频教程_IT教程网

    资源名称:李兴华Java开发实战经典视频教程 资源目录: [IT教程网]010201_[第2章:简单Java程序]_简单Java程序 [IT教程网]010301_[第3章:Java基础程序设计]_Ja ...

  9. Java Spring框架入门详解教程【多测师_何sir】

    Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...

最新文章

  1. 为什么模型复杂度增加时,模型预测的方差会增大,偏差会减小?
  2. @Profile 根据不同环境注入bean
  3. lua源代码分析02:内存管理
  4. 实用技巧:Linux操作系统Vim/Vi编程提速
  5. linux ftdi 虚拟,linux – 由FTDI USB串行转换器创建的监控(嗅探)/ dev / ttyUSB0
  6. [精简版]CNN巻积层输出size计算公式
  7. 软件测试(四):软件测试用例设计
  8. STC单片机程序下载原理与自动下载
  9. 计算机主机内部的结构,台式电脑主机内部结构介绍
  10. linux 下的字体引擎(xtt freetype xfs xft)
  11. LeeCode1468. 计算税后工资
  12. Tesseract怎么识别中文
  13. 用tensorflow做的cbow词向量
  14. 垃圾收集器垃圾回收算法知识图解
  15. celery:File /home/hadoop/.virtualenvs/Django01/lib/python3.7/site-packages/fdfs_client/utils.py
  16. rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
  17. Spring-Boot整合微信登陆、微信支付、邮箱发送、支付宝支付和阿里云短信
  18. 优化大师优化后 出现的问题
  19. 自然语言理解(NLU)难在哪儿?
  20. python 产生小数等步长数据

热门文章

  1. linux sit0 wifi,I.MX6 AW-NB177NF wifi HAL 调试修改(示例代码)
  2. Linux 系统中的定时任务及延时任务
  3. P1101 单词方阵
  4. 前沿实践:垃圾回收器是如何演进的?
  5. 走出舒适圈,从来都不简单
  6. 《淡夜未央》:互动叙事游戏如何提升玩家参与感和互动性?
  7. 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
  8. 皇室战争:渔夫化身“战场搅屎棍”,见人就拉,选卡很关键
  9. 三星I9100[4.0 固件ROM] [2012.03.15]万众期待的欧版官方4.0.3完美汉化完美教程
  10. 评《认知红利》 谢春霖著