欢迎来到天天文库
浏览记录
ID:14149055
大小:121.50 KB
页数:12页
时间:2018-07-26
《javascript-ff和ie兼容性问题总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【总结】IE和Firefox的Javascript兼容性总结 长久以来JavaScript兼容性一直是Web开发者的一个主要问题。在正式规范、事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬。为此,主要从以下几方面差异总结IE和Firefox的Javascript兼容性: 一、函数和方法差异; 二、样式访问和设置; 三、DOM方法及对象引用; 四、事件处理; 五、其他差异的兼容处理。 一、函数和方法差异1.getYear()方法【分析说明】先看一下以下代码:varyear=newDate().getYear();document.write(y
2、ear); 在IE中得到的日期是"2010",在Firefox中看到的日期是"110",主要是因为在Firefox里面getYear返回的是"当前年份-1900"的值。【兼容处理】 加上对年份的判断,如:varyear=newDate().getYear();year=(year<1900?(1900+year):year);document.write(year); 也可以通过getFullYeargetUTCFullYear去调用:varyear=newDate().getFullYear();document.write(year); 2.eval()
3、函数【分析说明】在IE中,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象。【兼容处理】统一用getElementById("idName")来取得id为idName的HTML对象。 3.const声明【分析说明】在IE中不能使用const关键字。如:constconstVar=32;在IE中这是语法错误。【兼容处理】不使用const,以var代替。 4.var【分析说明】请看以
4、下代码:echo=function(str){document.write(str);}pre> 这个函数在IE上运行正常,Firefox下却报错了。【兼容处理】而在echo前加上var就正常了,这个就是我们提到var的目的。 5.const问题【分析说明】在IE中不能使用const关键字。如 constconstVar=32; 在IE中这是语法错误。【解决方法】不使用const,以var代替。 二、样式访问和设置1.CSS的"float"属性【分析说明】Javascript访问一个给定CSS值的最基本句法是:object.style.property,但部分C
5、SS属性跟Javascript中的保留字命名相同,如"float","for","class"等,不同浏览器写法不同。在IE中这样写:document.getElementById("header").style.styleFloat="left";在Firefox中这样写:document.getElementById("header").style.cssFloat="left";【兼容处理】在写之前加一个判断,判断浏览器是否是IE:if(document.all){ document.getElementById("header").style.style
6、Float="left";}else{ document.getElementById("header").style.cssFloat="left";} 2.访问标签中的"for"【分析说明】和"float"属性一样,同样需要使用不现的句法区分来访问标签中的"for"。在IE中这样写:varmyObject=document.getElementById("myLabel");varmyAttribute=myObject.getAttribute("htmlFor");在Firefox中这样写:varmyObject=docume
7、nt.getElementById("myLabel");varmyAttribute=myObject.getAttribute("for");【兼容处理】解决的方法也是先判断浏览器类型。 3.访问和设置class属性【分析说明】同样由于class是Javascript保留字的原因,这两种浏览器使用不同的JavaScript方法来获取这个属性。IE8.0之前的所有IE版本的写法:varmyObject=document.getElementById("header");varmyAttribute=myObject.getAttribute("className
8、");适用
此文档下载收益归作者所有