找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2811|回复: 0

[教程] IE6终极备忘单——对IE6单独兼容

[复制链接]
发表于 2012-1-3 10:45:27 | 显示全部楼层 |阅读模式 来自 中国–江苏–南京
兼容IE6的第一步就是单独对IE进行兼容,你针对IE6所写的代码只影响IE6;有几种方法可以区分开IE6:IE特有条件注释、CSS选择器、JavaScript,我们将逐一讨论。

使用IE特有条件注释

微软给IE添加了条件注释以区分不同版本,任何东西都可以塞进条件注释里:标签、JavaScript、js文件、css、内联样式。可以使用条件注释来针对某一个IE浏览器版本来编写代码。

规则如下:(译注:可参考IE 特有注释(hack))

  1. 这段文字会在所有浏览器显示
  2. <!--[if lte IE 6]>
  3. 这段文字仅显示在 IE6及IE6以下版本。
  4. This message will only appear in versions of Internet Explorer less than or equal to version 6.
  5. <![endif]-->
  6. <!--[if gte IE 6]>
  7. 这段文字仅显示在 IE6及IE6以上版本。
  8. This message will only appear in versions of Internet Explorer greater than or equal to version 6.
  9. <![endif]-->
  10. <!--[if gt IE 6]>
  11. 这段文字仅显示在 IE6以上版本(不包含IE6)。
  12. This message will only appear in versions of Internet Explorer greater than version 6.
  13. <![endif]-->
  14. <!--[if IE 5.5]>
  15. 这段文字仅显示在 IE5.5。
  16. This message will only appear in Internet Explorer 5.5.
  17. <![endif]-->
  18. <!--在 IE6及IE6以下版本中加载css-->
  19. <!--[if lte IE 6]>
  20. [*]
  21. <![endif]-->
  22. 这段文字会在所有浏览器显示
复制代码
使用条件注释加载css的好处是这些样式是独立于其他css文件的,因此不会在编写兼容代码时弄得一团糟;而且当IE6的市场份额降低到不需要兼容时,可以快速的清理掉。
使用条件注释的唯一缺点是在IE浏览器下会增加额外的HTTP请求数,所以需要权衡是否这样做。但我不建议使用条件注释加载外部js文件,因为js文件会造成阻滞,在js未加载完之前其余文件都不会被加载;对于js请使用JavaScript程序来区分浏览器而非条件注释。
使用CSS选择器区分开IE6
如果你不打算使用条件注释,CSS选择器是另外一个区分开IE6的办法,IE6不支持子选择器;先针对IE6使用常规申明CSS选择器,然后再用子选择器针对IE7+及其他浏览器。
示例:
  1. <style type="text/css" >
  2. /* IE6 专用 */
  3. .content {color:red;}
  4. /* 其他浏览器 */
  5. div>p .content {color:blue;}
  6. </style>
  7. <div>
  8. <p class="header">Some Header Text Here
  9. </div>
复制代码
这个方法的缺点是容易把样式表弄得一团糟,所以一定要写好注释说明。
在示例中,针对IE6写的样式在其他浏览器中也会执行,但(标准浏览器中)之后的子选择器覆盖了之前的申明,而IE6不支持子选择器所以忽略了它。
扩展阅读:
使用JavaScript区分开IE6
如果你想要使用JavaScript区分开IE6,请看示例:
  1. //原生JavaScript
  2. if(typeof document.body.style.maxHeight === "undefined") {
  3.     alert('IE6 Detected');
  4. }
  5. //MooTools(框架)
  6. if (Browser.Engine.trident4) {
  7.     alert('IE6 Detected');
  8. }
  9. //jQuery(框架)
  10. if (($.browser.msie) && ($.browser.version == "6.0")){
  11.     alert('IE6 Detected');
  12. }
复制代码
扩展阅读:

评分

参与人数 1金币 +1 收起 理由
光明使者 + 1 赞一个!

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-22 05:22 , Processed in 0.046357 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表