最近负责调项目中的兼容性问题,因为原来开发时候只针对iE没有在FF下面测试过,其实原来也知道,因客户方没有要求,所以就没有做,最近客户方原来负责的项目主管换了,新来的要求蛮高的,其中兼容性就是其中一条。已经调了一半,目前发现的问题经过本人整理如下。不好之处,敬请指正,不甚感激。
1:获取指定ID和Name的元素的方法
document.getElementById
document.getElementsByName
document.all.
document.getElementsByTagName
document.getSelection
第一个是IE和FF通用的,而第二个在IE和FF返回的结果,IE能得到结果,而FF得不到
第三个是IE独有的,不建议使用
如<div name='demo1'>dem o1</div>
使用document.getElementByName('demo1')在IE下是可以得到对象的,而FF为null
但是对于表单元素FF可以得到对象。
2:操作select的方法
下面的方法是在IE可以用
var res=XMLHttpReq.responseXML.getElementsByTagName("res");
var list = document.all.list;
list.options.length=0;
list.add(new Option("---请选择产品型号---",""));
for(var i=0;i<res.length;i++){
list.add(new Option(res[i].firstChild.data,res[i].firstChild.data));
}
通用的是如下
var res=XMLHttpReq.responseXML.getElementsByTagName("res");
var list = document.getElementById('list');
list.options.length=0;
list.options[list.length] = new Option("---请选择产品型号---","");
for(var i=0;i<res.length;i++){
list.options[list.length] = new Option(res[i].firstChild.data,res[i].firstChild.data);
}
3:操作滤镜的方法
滤镜本来是IE独有的,w3c组织将其列入标准,ff从2.0开始支持
if(currentID.filters){//ie
currentID.filters.alpha.opacity+=20;
}else if(currentID.style){//ff
currentID.style.MozOpacity+=20;
}
4:访问父节点的方法要用parentNode而不是用IE独有的parentElement,遵从dom标准操作规范即可
5:操作xml的方式也不同
无论是操作结点还是加载方式,参考网上相关的文章即可。