IE火狐兼容性问题
- 格式:docx
- 大小:31.09 KB
- 文档页数:12
IE与Firefox兼容性问题一、脚本兼容性脚本语言要使用javascript,不要使用vbscript,因为vbs只有IE支持,火狐是不支持的关于获取form表单数据,国际通用的标准是根据id获得,但是IE也可以通过name获得,为了兼容性,还是选择id吧,另外,FF也不支持IE的document.all,要用通用的document.getElementById自定义属性问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.解决方法:统一通过getAttribute()获取自定义属性.document.formName.item("itemName") 问题说明:IE下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"].解决方法:统一使用document.formName.elements["elementName"].集合类对象问题说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.解决方法:统一使用[]获取集合类对象.eval("idName")问题说明:IE下,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用getElementById("idName")来取得id为idName的HTML对象.解决方法:统一用getElementById("idName")来取得id为idName的HTML对象.变量名与某HTML对象ID相同的问题说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使用;Firefox下则不能.Firefox下,可以使用与HTML对象ID相同的变量名;IE下则不能。
浏览器兼容新问题W3C对标准的推进,Firefox,Chrome,Safari,Opera的出现,结束了IE雄霸天下的日子。
然而,这对开发者来说,是好事,也是坏事。
说它是好事,是因为浏览器厂商为了取得更多的市场份额,会促使各浏览器更符合W3C标准,而得到更好的兼容性,并且,不同浏览器的扩展功能(例如 -moz,-webkit开头的样式),对W3C标准也是个推进;说它是坏事,因为,多个浏览器同时存在,这些浏览器在处理一个相同的页面时,表现有时会有差异。
这种差异可能很小,甚至不会被注意到;也可能很大,甚至造成在某个浏览器下无法正常浏览。
我们把引起这些差异的问题统称为“浏览器兼容性问题”。
而正是这些“浏览器兼容性问题”,无形中给我们的开发增加了不少难度。
从浏览器内核的角度来看,浏览器兼容性问题可分为以下三类:1. 渲染相关:和样式相关的问题,即体现在布局效果上的问题。
2. 脚本相关:和脚本相关的问题,包括JavaScript和DOM、BOM方面的问题。
对于某些浏览器的功能方面的特性,也属于这一类。
3. 其他类别:除以上两类问题外的功能性问题,一般是浏览器自身提供的功能,在内核层之上的。
例如下面的页面,是一个渲染相关的问题:在各个浏览器中都表现的不同,这就属于兼容性问题。
造成浏览器兼容性问题的根本原因就是浏览器各浏览器使用了不同的内核,并且它们处理同一件事情的时候思路不同。
现今常见的浏览器及其排版引擎(又称渲染引擎)及脚本引擎,如下:而造成浏览器兼容性问题的常见原因则是设计师写出了不规范的代码,不规范的代码会使不兼容现象更加突出。
例如:不规则的嵌套:DIV 中直接嵌套 LI 元素是不合标准的,LI 应该处于 UL 内。
此类问题常见的还有 P 中嵌套 DIV, TABLE 等元素。
不规范的DOM接口和属性设置:上面代码中top的值,其实应该是一个字符串值,需有单位。
例如:35px。
总之,人为的原因也占很大一部分。
浏览器兼容性的解决方法随着互联网的不断发展,浏览器也得到了越来越多的重要性。
从最初的简单浏览功能到现在的多样化应用,浏览器正变得越来越重要。
但是,不同的浏览器有不同的协议和语言,可能会导致网页在不同的浏览器中显示不同的效果。
所以我们需要解决浏览器兼容性问题。
浏览器兼容性问题浏览器兼容性问题是在不同的浏览器中显示不一致的问题,有时候还会出现网页无法正常显示的问题。
这是因为每个浏览器都有各自的实现标准和处理方式,而网页制作人员通常只考虑一种浏览器,没有考虑到其他浏览器访问自己的网站,导致了这种兼容性问题。
实际上,在网站开发的过程中,应该优先考虑多种浏览器,尤其是Internet Explorer和Firefox在不同版本之间的差异。
这样才能让网站在不同的环境下,不同的浏览器和不同的操作系统下都能完美的运行。
解决浏览器兼容性问题虽然不同的浏览器有不同的实现标准,但是我们可以采用一些措施来解决这种浏览器兼容性问题。
1.使用标准的HTML/CSS/Javascript遵循HTML、CSS和JavaScript的标准,是解决浏览器兼容性问题的基础。
这样的编写方式通常可以使网站在大多数浏览器中运行良好。
如果您尝试按照标准编写只能在一种浏览器中工作的网页,那么它就不会在其他浏览器上工作良好。
所以,标准的HTML/CSS/Javascript是解决浏览器兼容性问题的关键。
2.使用CSS Reset在CSS Reset中,使用过CSS的开发者可能都有过这样的经历:每种浏览器都默认有自己的样式表文件,这就是为什么某些元素在设计页面时会出现各种奇怪的问题。
CSS Reset 的目的就是将所有浏览器的默认样式表重置,以达到统一的目的,从而减少浏览器兼容性问题。
3.使用BootstrapBootstrap是一个开源的前端框架,它包含众多基于HTML、CSS和JavaScript的组件,可以快速构建一个响应式、移动优先的网站。
网页设计如何解决兼容性问题网页〔制定〕如何解决兼容性问题firefox下div容器定义height后,div不会因为内容超出height而撑大,而i6e下是会被内容撑大,高度限定失效。
所以不要轻易给容器定义height。
下面介绍网页制定如何解决兼容性问题,希望对您有所帮助。
1. 文字大小不兼容同样14px的宋体字,ie下实际占高16px,下留白3px,firefox 下实际占高17px,上留白1px,下留白3px。
文字大小不兼容解决方案:给所有文字设定通用line-height 值2.div高度不兼容firefox下div容器定义height后,div不会因为内容超出height而撑大,而i6e下是会被内容撑大,高度限定失效。
所以不要轻易给容器定义height。
div高度不兼容解决方案:如果设置高度,必须要同时把内容物高度限定,也就是溢出隐藏处理:overflow:hidden;或者当必须要随着内容自适应高度,但又想div有一个最小的高度时候,像这样做min-height: 1400px;max-height:none;_height:1400px;3.div宽度不兼容如果div容器设定float浮动但没设定宽度,那么也会出现ie6和firefox的不兼容。
firefox下内容会撑开容器渗入它前面的div,ie6下该div内容折行而不是我们想象的与同级div在同一行。
div宽度不兼容解决方案:浮动div容器一般必须定义width。
4.div浮动不兼容当前面div有左浮动和右浮动,下面div就会受他们影响也有浮动。
ie或许不用加清除,但firefox下不清除浮动是不行的。
div浮动不兼容解决方案:给下面的div设定清除 clear:both;5. double-margin不兼容ie6下给浮动容器定义margin-left 或者margin-right 实际效果是数值的2倍。
解决方案:给浮动容器定义display:inline。
JavaScript在IE和Firefox(⽕狐)的不兼容问题解决⽅法⼩结复制代码代码如下:if (window.HTMLElement) {HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML) {var r=this.ownerDocument.createRange();r.setStartBefore(this);var df=r.createContextualFragment(sHTML);this.parentNode.replaceChild(df,this);return sHTML;});HTMLElement.prototype.__defineGetter__("outerHTML",function() {var attr;var attrs=this.attributes;var str="<"+this.tagName.toLowerCase();for (var i=0;i<attrs.length;i++) {attr=attrs[i];if(attr.specified)str+=" "++'="'+attr.value+'"';}if(!this.canHaveChildren)return str+">";return str+">"+this.innerHTML+"</"+this.tagName.toLowerCase()+">";});HTMLElement.prototype.__defineGetter__("canHaveChildren",function() {switch(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":return false;}return true;});}说明:IE下,可以使⽤()或[]获取集合类对象;Firefox下,只能使⽤[]获取集合类对象.解决⽅法:统⼀使⽤[]获取集合类对象.说明:IE下,可以使⽤获取常规属性的⽅法来获取⾃定义属性,也可以使⽤getAttribute()获取⾃定义属性;Firefox下,只能使⽤getAttribute()获取⾃定义属性.解决⽅法:统⼀通过getAttribute()获取⾃定义属性.说明:IE下,,可以使⽤eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使⽤getElementById("idName")来取得id为idName的HTML对象.解决⽅法:统⼀⽤getElementById("idName")来取得id为idName的HTML对象.说明:IE下,HTML对象的ID可以作为document的下属对象变量名直接使⽤;Firefox下则不能.Firefox下,可以使⽤与HTML对象ID 相同的变量名;IE下则不能。
IE火狐浏览器兼容问题大全1.最简单的鼠标移过手变型的css要改了cursor:pointer;/*Firefox不支持cursor:hand*/ dw8下面自动出来的也没有hand这个属性了,标准的是pointer2.Firefox不支持滤镜最常见的半透明不支持。
filter: Alpha(Opacity=50); /* for IE */opacity: .5;/* for Firefox */style="-moz-opacity:0.5; filter:alpha(opacity=50);cursor:hand;"onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100" onmouseout="this.style.MozOpacity=0.5;this.filters.alpha.opacity=50"3.Firefox不支持expression 例如去掉链接的边框要分别写不同的cssa,area { blr:expression(this.onFocus=this.blur()) } /* for IE */:focus { outline: none; } /* for Firefox */4.Firefox不支持div滚动条的颜色设置,目前还没有找到替换的好方法。
.contendiv {position: absolute; left: 0px; top: 10px; width: 580px;height: 135px;line-height:120%;text-align:left; font-family:"宋体";word-break : break-all; color:#6D6E71; OVERFLOW-Y:auto;OVERFLOW-X:no;SCROLLBAR-ARROW-COLOR: red; SCROLLBAR-TRACK-COLOR:F6F6F6;SCROLLBAR-FACE-COLOR:#F6F6F6;SCROLLBAR-SHADOW-COLOR:#F6F6 F6;SCROLLBAR-DARKSHADOW-COLOR:#F6F6F6;SCROLLBAR-3DLIGHT-COLOR:#F6F6F6;SCROLLBAR-HIGHLIGHT-COLOR:#F6F6F6;}这个在Firefox里面完全没有效果了。
前端框架技术中常见的浏览器兼容性问题及解决方案在前端开发过程中,浏览器兼容性问题一直是一个头疼的难题。
由于不同浏览器的渲染引擎和规范解释存在差异,导致同样的前端代码在不同浏览器上可能会呈现不同的效果甚至出现错误。
为了提供用户一致的体验,我们需要了解并解决常见的浏览器兼容性问题。
一、CSS兼容性问题1. 盒模型差异Chrome、Firefox以及Safari使用的是W3C标准的盒模型,而IE使用的是传统的IE盒模型。
解决方案是使用CSS的box-sizing属性来明确指定所使用的盒模型。
```box-sizing: border-box; /*使用W3C的盒模型*/box-sizing: content-box; /*使用传统的IE盒模型*/```2. 浮动清除在IE6及其以前的版本中,浮动元素没有被正确的清除,可能会导致父容器的高度无法自适应。
解决方案是使用clearfix类或者在父容器上添加clear属性。
```.clearfix::after {content: "";display: table;clear: both;}```3. 层叠样式兼容性不同浏览器的CSS样式的优先级计算存在差异,可能导致样式覆盖问题。
解决方案是合理使用选择器和样式优先级,避免出现覆盖问题。
二、JavaScript兼容性问题1. DOM操作差异不同浏览器对于DOM操作的实现存在差异,可能导致相同的DOM操作代码在不同浏览器上出现错误。
解决方案是使用现代的DOM操作API,如querySelector、addEventListener等,或者使用框架提供的封装方法。
2. 事件处理不同浏览器对于事件处理的实现存在差异,可能导致事件处理代码在不同浏览器上有兼容性问题。
解决方案是使用框架提供的事件处理方法,如jQuery的事件处理方法,或者使用addEventListener来注册事件。
3. AJAX兼容性不同浏览器对于XMLHttpRequest对象的实现存在差异,可能导致AJAX代码在不同浏览器上无法正常工作。
如何解决ie与⽕狐的兼容问题如何解决ie与⽕狐的兼容问题1.document.form.item问题(1)现有问题:现有代码中存在许多document.formName.item("itemName")这样的语句,不能在Firefox(⽕狐)下运⾏(2)解决⽅法:改⽤document.formName.elements["elementName"]2.集合类对象问题(1)现有问题:现有代码中许多集合类对象取⽤时使⽤(),IE能接受,Firefox(⽕狐)不能。
(2)解决⽅法:改⽤[]作为下标运算。
如:⼜如:3.window.event(1)现有问题:使⽤window.event⽆法在⽕狐浏览器上运⾏(2)解决⽅法:⽕狐的event只能在事件发⽣的现场使⽤,此问题暂⽆法解决。
可以这样变通:原代码(可在IE中运⾏):新代码(可在IE和⽕狐中运⾏):此外,如果新代码中第⼀⾏不改,与⽼代码⼀样的话(即gotoSubmit调⽤没有给参数),则仍然只能在IE中运⾏,但不会出错。
所以,这种⽅案tpl部分仍与⽼代码兼容。
4.HTML对象的id作为对象名的问题(1)现有问题在IE中,HTML对象的ID可以作为document的下属对象变量名直接使⽤。
在⽕狐中不能。
(2)解决⽅法⽤getElementById("idName")代替idName作为对象变量使⽤。
5.⽤idName字符串取得对象的问题(1)现有问题在IE中,利⽤eval(idName)可以取得id为idName的HTML对象,在⽕狐中不能。
(2)解决⽅法⽤getElementById(idName)代替eval(idName)。
6.变量名与某HTML对象id相同的问题(1)现有问题在⽕狐中,因为对象id不作为HTML对象的名称,所以可以使⽤与HTML对象id相同的变量名,IE中能。
(2)解决⽅法在声明变量时,⼀律加上var,以避免歧义,这样在IE中亦可正常运⾏。
1、float的div一定要闭合。
例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id=\”floatA\”><#div id=\”floatB\” ><#div id=\”NOTfloatC\” >这里的NOTfloatC并不希望继续平移,而是希望往下排。
这段代码在IE中毫无问题,问题出在FF。
原因是NOTfloatC并非float标签,必须将float标签闭合。
在<#div class=\”floatB\”><#div class=\”NOTfloatC\”>之间加上<#div class=\”clear\”>这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。
并且将clear这种样式定义为如下即可:.clear{clear:both;}2、margin加倍的问题。
设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;例如:<#div id=\”imfloat\”>相应的css为#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}5、最狠的手段- !important;如果实在没有办法解决一些细节问题,可以用这个方法.FF对于”!important”会自动优先解析,然而IE则会忽略.如下.tabd1{background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过;IE7.0出来了,对CSS的支持又有新问题。
浏览器多了,网页兼容性更差了,疲于奔命的还是我们,为解决IE7.0的兼容问题,找来了下面这篇文章:现在我大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没按要求显示!搜索了一下,找到一个针对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。
现在写一个CSS可以这样:#example { color: #333; } /* Moz */* html #example { color: #666; } /* IE6 */*+html #example { color: #999; } /* IE7 */那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999,他们都互不干扰。
IE6能识别下划线_和星号*,IE7能识别星号*,不能识别下划线_4、cursor: pointer可以同时在IE FF 中显示游标手指状,hand 仅IE 可以5、FF: 链接加边框和背景色,需设置display: block,同时设置float: left 保证不换行。
6、FF(火狐):设置padding后,DIV会增加height和width,但IE不会,故需要用!important多设一个height和widthCSS+DIV的兼容性问题在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS 设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网可能出去不想出现的效果!所有浏览器通用height: 100px;IE6 专用_height: 100px;IE6 专用*height: 100px;IE7 专用*+height: 100px;IE7、FF 共用height: 100px !important;一、CSS 兼容以下两种方法几乎能解决现今所有兼容.1, !important (不是很推荐,用下面的一种感觉最安全)随着IE7对!important的支持, !important 方法现在只针对IE6的兼容.(注意写法.记得该声明位置需要提前.)代码:<style>#wrapper {width: 100px!important; /* IE7+FF */width: 80px; /* IE6 */}</style>2, IE6/IE77对FireFox <from 针对firefox ie6 ie7的css样式>*+html 与*html 是IE特有的标签, firefox 暂不支持.而*+html 又为IE7特有标签.代码:<style>#wrapper { width: 120px; } /* FireFox */*html #wrapper { width: 80px;} /* ie6 fixed */*+html #wrapper { width: 60px;} /* ie7 fixed, 注意顺序*/</style>注意:*+html 对IE7的兼容必须保证HTML顶部有如下声明:代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">二、万能float 闭合(非常重要!) 可以用这个解决多个div对齐时的间距不对,关于clear float 的原理可参见[How To Clear Floats Without Structural Markup]将以下代码加入Global CSS 中,给需要闭合的div加上class=”clearfix” 即可,屡试不爽.代码:<style>/* Clear Fix */.clearfix:after {content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix {display:inline-block;}/* Hide from IE Mac \*/.clearfix {display:block;}/* End hide from IE Mac *//* end of clearfix */</style>三、其他兼容技巧(相当有用)1, FF下给div 设置padding 后会导致width 和height 增加, 但IE不会.(可用!important 解决)2, 居中问题.1).垂直居中.将line-height 设置为当前div 相同的高度, 再通过vetical-align: middle.( 注意内容不要换行.)2).水平居中. margin: 0 auto;(当然不是万能)3, 若需给a 标签内内容加上样式, 需要设置display: block;(常见于导航标签)4, FF 和IE 对BOX 理解的差异导致相差2px 的还有设为float的div在ie下margin加倍等问题.5, ul 标签在FF 下面默认有list-style 和padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)6, 作为外部wrapper 的div 不要定死高度, 最好还加上overflow: hidden.以达到高度自适应.7, 关于手形光标. cursor: pointer. 而hand 只适用于IE.贴上代码:兼容代码:兼容最推荐的模式。
/* FF */.submitbutton {float:left;width: 40px;height: 57px;margin-top: 24px;margin-right: 12px;}/* IE6 */*html .submitbutton {margin-top: 21px;}/* IE7 */*+html .submitbutton {margin-top: 21px;}什么是浏览器兼容:当我们使用不同的浏览器(Firefox IE7 IE6)访问同一个网站,或者页面的时候,会出现一些不兼容的问题,有的显示出来正常,有的显示出来不正常,我们在编写CSS的时候会很恼火,刚修复了这个浏览器的问题,结果另外一个浏览器却出了新问题。
而兼容就是一种办法,能让你在一个CSS里面独立的写支持不同浏览器的样式。
这下就和谐了。
呵呵!最近微软发布的IE7浏览器的兼容性确实给一些网页制作人员添加了一个沉重的负担,虽然IE7已经走向标准化,但还是有许多和FF不同的地方,所以需要用到IE7的兼容,有许多朋友问过IE7的兼容是什么,其实我也不知道。
暂时还没找到IE7专用的兼容。
除了前面那片文章,《针对firefox ie6 ie7的css样式》中的兼容方式也是很好用的。
有一点逻辑思想的人都会知道可以用IE和FF的兼容结合起来使用,下面介绍三个兼容,例如:(适合新手,呵呵,高手就在这里路过吧。
)程序代码第一个兼容,IE FF 所有浏览器公用(其实也不算是兼容)height:100px;第二个兼容IE6专用_height:100px;第三个兼容IE6 IE7公用*height:100px;介绍完了这三个兼容了,下面我们再来看看如何在一个样式里分别给一个属性定义IE6 IE7 FF专用的兼容,看下面的代码,顺序不能错哦:程序代码height:100px;*height:120px;_height:150px;下面我简单解释一下各浏览器怎样理解这三个属性:在FF下,第2、3个属性FF不认识,所以它读的是height:100px;在IE7下,第三个属性IE7不认识,所以它读第1、2个属性,又因为第二个属性覆盖了第一个属性,所以IE7最终读出的是第2个属性*height:120px;在IE6下,三个属性IE6都认识,所以三个属性都可以读取,又因为第三个属性覆盖掉前2个属性,所以IE6最终读取的是第三个属性。
1 针对firefox ie6 ie7的css样式现在大部分都是用!important来兼容,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没按要求显示!找到一个针对IE7不错的兼容方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了现在写一个CSS可以这样:#1 { color: #333; } /* Moz */* html #1 { color: #666; } /* IE6 */*+html #1 { color: #999; } /* IE*/那么在firefox下字体颜色显示为#333IE6下字体颜色显示为#666,IE7下字体颜色显示为#999。