本文共 1469 字,大约阅读时间需要 4 分钟。
一直都发现IE与FF有太多的不同点,但一直没有总结下来,从今天开始,我会在这篇博客里记录下,我所碰到的IE与FF不同的地方,以及相应的解决办法;
1、判断是不是IE浏览器
if("\v"!=="v"){//判断是不是IE浏览器,这里是如果不是,则执行下现的代码 //如果不是IE的话,CODE HERE }
//方法二:
var ie = (navigator.appVersion.indexOf("MSIE")!=-1);//IE if(ie){}2、IE与FF的焦点问题
IE中:
在点击一个元素时,如果这个元素能够设为焦点,包括能设置焦点的DIV元素,则IE会自动将其设为焦点,无需人为的再次设置,如果再次设置在IE中会出现此DIV完全显示出来
如下图,这是在点击时,没有添加$(this).focus()代码的,在点击红线框框住的DIV元素时,在DIV元素周围会出现,此DIV的实现大小如红框所示,说明此时IE已经将其设为焦点
下面我们再看下如果添加了$(this).focus()后再次点击会出现什么效果:
看到了吧,在点击之后,这个DIV元素不仅被设为焦点,而且还多了一个动作,就是全部都显示出来,可以看到把左边的那个DIV元素给挤出去了,这就出现了错误;
结论:如果要在IE中设置焦点,不需要使用$(this).foucs()函数,只需要将此DIV添加上具体设置焦点的属性即可,在点击时IE会自动将其设为焦点;
FF中:
在FF中,点击一下DIV,没有任何反应,必须添加上$(this).foucs()才会将其设为焦点,而$(this).foucs()实现的效果正常,不会出现IE所示的情况
解决办法:我们要在加$(this).foucs()设置焦点时,得先判断是不是IE浏览器,如果不是,我们就给它加上这句代码;代码如下:
if("\v"!=="v"){//判断是不是IE浏览器,如果不是则加入FOCUS,因为IE会在点击时自动将其设为焦点,而FF不会 $(this).focus(); }
3,JS的event.clientX event.clientY 与JQUERY的event.pageX event.pageY
我在FF中,本来用的是JS原生的clientY ,但获取值时,有时是错误的,调了好久才发现,后来换成jquery的pageY,成功解决!看来JQUERY对其封装是有原因的。clientX没试,不知道是不是也会出错;
4,input type='file' 上传控件,内容的清空
html语句如下:
JS语句如下:
if(ie){ var tempNode=document.getElementById("file"); var file2= tempNode.cloneNode(false); file2.οnchange= tempNode.onchange; tempNode.parentNode.replaceChild(file2,tempNode); }else{ $("input[name=upfile]").val("");//FF清空方法 }
5,IE6中z-index不支持0零值
在IE中当遇到z-index为0值时,IE会自动将其设为1,但IE6是支持负值的,是而FF中是支持0值与负值的
IE6中对于z-index是存在很多很多问题的,如果还有其它对于Z次序出问题的情况,这里有篇文章,很好,可以参考一下:
转载地址:http://ntrxf.baihongyu.com/