欢迎来到天天文库
浏览记录
ID:14101197
大小:168.00 KB
页数:16页
时间:2018-07-26
《ie和firefox的javascript兼容性总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、【总结】IE和Firefox的Javascript兼容性总结 长久以来JavaScript兼容性一直是Web开发者的一个主要问题。在正式规范、事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬。为此,主要从以下几方面差异总结IE和Firefox的Javascript兼容性: 一、函数和方法差异; 二、样式访问和设置; 三、DOM方法及对象引用; 四、事件处理; 五、其他差异的兼容处理。一、函数和方法差异1.getYear()方法【分析说明】先看一下以下代码:varyear=newDate().getYear();document.write(ye
2、ar); 在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,但部分CSS属性跟Jav
5、ascript中的保留字命名相同,如"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.styleFloat="l
6、eft";}else{ document.getElementById("header").style.cssFloat="left";}2.访问标签中的"for"【分析说明】和"float"属性一样,同样需要使用不现的句法区分来访问标签中的"for"。在IE中这样写:varmyObject=document.getElementById("myLabel");varmyAttribute=myObject.getAttribute("htmlFor");在Firefox中这样写:varmyObject=document.getEle
7、mentById("myLabel");varmyAttribute=myObject.getAttribute("for");【兼容处理】解决的方法也是先判断浏览器类型。3.访问和设置class属性【分析说明】同样由于class是Javascript保留字的原因,这两种浏览器使用不同的JavaScript方法来获取这个属性。IE8.0之前的所有IE版本的写法:varmyObject=document.getElementById("header");varmyAttribute=myObject.getAttribute("className");适用于IE8.
8、0以及fi
此文档下载收益归作者所有