欢迎来到天天文库
浏览记录
ID:45493684
大小:28.50 KB
页数:7页
时间:2019-11-13
《IE与Firefox兼容论述》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、今天测试代码时,发现不少IE可以运行的ajax,但在FF中报错。IE和Firefox(火狐)在JavaScript方面的不兼容及统一方法总结如下:1.兼容firefox的outerHTML,FF中没有outerHtml的方法。if(window.HTMLElement){HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){varr=this.ownerDocument.createRange();r.setStartBefor
2、e(this);vardf=r.createContextualFragment(sHTML);this.parentNode.replaceChild(df,this);returnsHTML;});HTMLElement.prototype.__defineGetter__("outerHTML",function(){varattr;varattrs=this.attributes;varstr="<"+this.tagName.toLowerCase();for(vari=0;i3、gth;i++){attr=attrs[i];if(attr.specified)str+=""+attr.name+'="'+attr.value+'"';}if(!this.canHaveChildren)returnstr+">";returnstr+">"+this.innerHTML+""+this.tagName.toLowerCase()+">";});HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){s4、witch(this.tagName.toLowerCase()){case"area":case"base":case"basefont":case"col":case"frame":case"hr":case"img":case"br":case"input":case"isindex":case"link":case"meta":case"param":returnfalse;}returntrue;});}2.集合类对象问题说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[5、]获取集合类对象.解决方法:统一使用[]获取集合类对象.3.自定义属性问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.解决方法:统一通过getAttribute()获取自定义属性.4.eval("idName")问题说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下6、只能使用getElementById("idName")来取得id为idName的HTML对象.解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.5.变量名与某HTML对象ID相同的问题说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。解决方法:使用document.getElementById("idName")代替docum7、ent.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.6.const问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.解决方法:统一使用var关键字来定义常量.7.input.type属性问题说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.8.window.event问题说明:window.event只能在IE下运行,而不能在Fir8、efox下运行,这是因为Firefox的event只能在事件发生的现场使用.解决方法:IE:...functiongotoSubmit8_1(){...alert(window.event);
3、gth;i++){attr=attrs[i];if(attr.specified)str+=""+attr.name+'="'+attr.value+'"';}if(!this.canHaveChildren)returnstr+">";returnstr+">"+this.innerHTML+""+this.tagName.toLowerCase()+">";});HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){s
4、witch(this.tagName.toLowerCase()){case"area":case"base":case"basefont":case"col":case"frame":case"hr":case"img":case"br":case"input":case"isindex":case"link":case"meta":case"param":returnfalse;}returntrue;});}2.集合类对象问题说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[
5、]获取集合类对象.解决方法:统一使用[]获取集合类对象.3.自定义属性问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.解决方法:统一通过getAttribute()获取自定义属性.4.eval("idName")问题说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下
6、只能使用getElementById("idName")来取得id为idName的HTML对象.解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.5.变量名与某HTML对象ID相同的问题说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。解决方法:使用document.getElementById("idName")代替docum
7、ent.idName.最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var,以避免歧义.6.const问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量.解决方法:统一使用var关键字来定义常量.7.input.type属性问题说明:IE下input.type属性为只读;但是Firefox下input.type属性为读写.8.window.event问题说明:window.event只能在IE下运行,而不能在Fir
8、efox下运行,这是因为Firefox的event只能在事件发生的现场使用.解决方法:IE:...functiongotoSubmit8_1(){...alert(window.event);
此文档下载收益归作者所有