js在ie和ff下兼容的一点心得

1. 
ie下使用style="width:0"会使控件不可见,但是firefox下仍然会显示一条竖线
所以如果要隐藏控件的话,最好写成style="display:none"
height同理

2.
在函数内部firefox不识别event
如果一定要用到event,那么可以将event作为参数传入funtion再进行处理

关于ff和ie的定位问题
object.offsetTop
ie 总是相对于父节点的位置,只有在position=absolute的情况下,object.offsetTop取得是相对于document.body的位置
ff 总是相对于document.body的位置

3.
使用<input type="file">时
最好使用size属性控制控件的大小样式,如<input type="file" size="20">
如果你要是用<input type="file" style="width:150">的话,fx默认会将overflow的部分hide

4.
firefox不支持cursor:hand
可以用cursor:pointer替代,ie下也可以通用
所以以后大家可以完全用pointer代替hand

5.
要添加一个option节点到<select></select>
ie可以如下:
var opt = document.createElement('option');
select.add(opt);
opt.innerText = '';
通用:
var opt = document.createElement('option');
select.appendChild(opt);
opt.text = ''; (或者opt.innerHTML = '';)
opt.value = '';

如果要在某个节点前插入一个节点
一般来说,ie下可以这样做
select.add(opt, index);
通用:
select.insertBefore(opt,brotheropt);
brotheropt是opt插入的后一个节点

同样,对应的,删除一个元素(不局限于删除option)
ie下可用object.removeNode(true)
将删除对象自身

firefox和ie通用parent.removeChild(object)
parent是object的父节点
object将被删除

6.
firefox不支持outerHTML outerText innerText
只支持innerHTML

7.
firefox中,自定义属性必须使用getAttribute()方法取得
同理,设置自定义属性可用setAttribute(属性名,属性值)方法
早期的ie不支持这两个方法,最新版的6.0已经支持

但是ie对于getAttribute()方法的支持还是有点问题的,ie对于某些属性,有自己独特的命名
已知的如下:
 <input type="checkbox" Status="01">
 object.getAttribute("Status")应该==01
 但是在ie下,获得的值是true
 
 要设置class属性,必须用setAttribute("class",属性值)的方法
 但是ie下,必须使用setAttribute("className",属性值),因为在ie中,className == class

8.
滤镜控制透明度
ie
filter:alpha(opacity=50)

mozilla
-moz-opacity:0.5;

css3标准(firefox1.5及以上版本支持)
opacity: 0.5

9.
ie支持
取集合元素array的子元素可用
array(i) array[i] array.item[i]等方式

firefox只支持array[i]

10.
ie支持object.children
w3c  object.childNodes

11.
ie取父节点
object.parentElement
ie、ff皆支持
object.parentNode

12.
ff和ie均支持document.getElementById('objectId')和document.getElementsName('objectName')
需要注意的是前者是取得唯一元素,因为id是唯一的,而后者大家注意到Element后多了个s,因为hmtl对象的名字是可以重复的,所以它取得的是一个数组,如document.getElementsName('objectName')[0]则是第一个对象,依此类推,它们的关系就像人的身份证和姓名一样
使用诸如document.getElementById('objectId')之类的方法时
ie不区分objectId的大小写
ff严格区分
ie 对于document.getElementsByName()方法的支持有错误,
他会把id误认为name,所以无法在ie中用此方法取出某一组节点

FF不支持document.all()
ie 和 FF 均支持 document.getElementsByTagName();

13.
iframe只对ie有效,ff下请用frameset

14.
在样式里面,IE对1px和1都认,而FF只认1px,所以在样式里大家应该都要加上单位

15.
FF不支持eval(),ie支持,目前还没有找到什么兼容方法

16.
ie支持onselectstart和onresize ff不支持

17.
在这样用锚时
<A HREF="javascript:" οnclick="XXXX;return false;">
一定要在最后面加上return false;在ff下会报错

18.
在处理越长单词时,为了使其换行,在ie下需要加上如下的样式 style="width:100px;word-wrap:break-word;word-break:keep-all;"
注意必须指定绝对宽度,这样当一个单词长得超过一行时,它会被自动换行,保证容器不会被撑开,而只要其一个单词的长度不超过一行那么它不会截断单词,另起一行以保证一行内显示一个完整的单词,因为长得超过一行的单词我们一般认为是不正常的或者恶意的单词,而ff下没有什么比较好的处理方法,要么加滚动条,要么用脚本控制换行 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值