IE浏览器的条件注释虽不太常用,却异常强大,不仅可以用来区分IE浏览器版本
仅IE6:
<!--[if IE6]>
怎么该,怎么该……
<![endif]-->
仅IE7:
<!--[if IE7]>
怎么该,怎么该……
<![endif]-->
还可以牛13滴用来区分非IE浏览器:
<!--[if !IE]><-->
怎么该,怎么该……
<![endif]-->
关键是条件注释后头的 <–> 在IE中被当作内部注释,而在非IE浏览器中会闭合之前的注释,从而起到区分非IE浏览器的作用,一般常用<!–>。
置换元素在 IE 浏览器中有不少问题,比方说置换元素的行高就是其中难题之一,当然还有 form 元素 textarea 的边距继承 bug,OK,今天再介绍几个,凑满一箩筐
IE的事件处理机制一直不像标准靠拢,这就逼着我们为跨浏览器应用编写两段脚本,一段是标准事件函数addEventListener,一段是IE的事件函数attachEvent.两者井水不犯河水,相安无事。直到cloneNode的出现……
很有趣,IE会在克隆节点的同时复制通过attachEvent绑定的事件……
之前有讲过 IE6 下多余的注释会引起浮动容器的字符复制BUG。根据这个原理,解决了不少相似的问题,不过今天碰到的却让我人很头疼,原因是这次出问题的是iframe。
废话不多讲,直接看代码:
[code=html]
正常的div容器一
[/code]
在开发过程中,新排的版面在 IE 浏览器中出现到了一个很奇特的现象,搞的我愣了好一会,后来才弄明白是怎么一回事,其实很早之前就在老外博客里看过这个 BUG 的表现,但一直没碰到过,今天算是逮了个正着。
做个示例重现一下 BUG,无论你是否已经知道这个 BUG,请与我一起瞻仰伟大的 IE6,IE7 之风采~~~
效果(IE浏览器中必有惊喜)
[code=html]
复选框也不继承边距
文本框继承边距
[/code]
Web 开发中经常会用到背景图,多数时候我们还需要用 CSS 动态调整背景图的位置。比如 Google 首页中的Toolbar 动画,就是用了一整张背景图,用 JS 控制元素的背景样式,实现动画效果。
不过 IE6 下默认不缓存背景图片,CSS 里每次更改图片的位置时都会重新发起请求,有时会造成图片抖动现象。我们可以用一段 JS 代码告诉 IE6 缓存背景图,这样就能避免再次请求。
document.execCommand("BackgroundImageCache", false, true);
IE7 已经修复了这个 BUG ,所以只需要针对 IE6 就可以了。Ext 的源码时已经考虑到了这一点,在 Ext.js 中给出了他的实现,在其它 Ajax 框架中不是很清楚有没有这种类似的代码,从这一个细节上就能看出Ext的全面!
var isIE = ua.indexOf("msie") > -1, isIE7 = ua.indexOf("msie 7") > -1;
// remove css image flicker
if(isIE && !isIE7){
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
}
用HTML的条件注释也可以
<!--[if IE 6]>
<script type="text/javascript">
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
</script>
<![endif]-->
PS: 口水ing Google 首页的Toolbar动画效果^_^
如果IE6浏览器是一个活生生的人,我真的很想把他拖出去海扁一顿,直到他体无完肤、摇摇欲坠,我还想耍一通“还我漂漂拳~~~”扫除IE6满身的BUG,至少把他打成IE7的人模人样,也算造福了全人类~~~~
In IE6 or IE7, when an absolutely positioned div locates beside a float div, it maybe disappeared.
在IE6或IE7,当一个绝对定位元素与浮动元素相邻时,绝对定位元素有可能消失。
说有可能,是因为IE6和IE7的消失情况不太一样!
文中列举了不同情况下的DEMO,请用IE6,IE7,FF做对比浏览……
说明:并不清楚这算不算的上是一个BUG,不过的确是一个挺奇怪的现象,这一次出现问题的是IE7,而IE6反而是正常的。
现象:本意是为了设置外容器的padding为10px 5px 0 5px;然而给外容器加上overflow:hidden之后,奇怪的问题就出现了……
粗略的翻译,这个文章年代久远了,因为IE7以后已经支持其他元素使用:hover等伪类啦。
译文:
大多数主流浏览器都支持对任何元素使用:hover伪类选择符,而且这么做很酷,我们可以用纯CSS为整一行加上鼠标指向时的效果。不过占有市场份额90%以上使用率的IE浏览器却并不支持:hover用在标签以外的元素中。
IE对它不支持的所有选择符都返回”UNKNOWN”。初看起来这还是可以有些道理……



