- 浏览: 45840 次
- 性别:
- 来自: 西安
文章分类
最新评论
Firefox与IE对javascript和CSS的区别
1. document.formName.item("itemName") 问题 说明:ie下,可以使用document.formName.item("itemName")或document.formName.elements["elementName"]; firefox下,只能使用document.formName.elements["elementName"]. 解决方法:统一使用document.formName.elements["elementName"]. 2.集合类对象问题 说明:IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象. 解决方法:统一使用[]获取集合类对象. 3.自定义属性问题 说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性. 解决方法:统一通过getAttribute()获取自定义属性. 4.eval("idName")问题 说明:IE下,,可以使用eval("idName")或getElementById("idName")来取得id为idName的HTML对象;Firefox下只能使用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")代替document.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下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用. Firefox必须从源处加入event作参数传递。ie忽略该参数,用window.event来读取该event。 解决方法: IE&Firefox: Submitted(event)"/> … <script language="javascript"> function Submitted(evt) { evt=evt?evt:(window.event?window.event:null); } </script> 9.event.x与event.y问题 说明:IE下,even对象有x,y属性,但是没有pageX,pageY属性;Firefox下,even对象有pageX,pageY属性,但是没有x,y属性. 解决方法:使用mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX. 10.event.srcElement问题 说明:IE下,event对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性. 解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target. 请同时注意event的兼容性问题。 11.window.location.href问题 说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location. 解决方法:使用window.location来代替window.location.href. 12.模态和非模态窗口问题 说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能. 解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。 如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口. 例如:var parWin = window.opener; parWin.document.getElementById("Aqing").value = "Aqing"; 13.frame问题 以下面的frame为例: <frame src="xxx.html" id="frameId" name="frameName" /> (1)访问frame对象: IE:使用window.frameId或者window.frameName来访问这个frame对象. frameId和frameName可以同名。 Firefox:只能使用window.frameName来访问这个frame对象. 另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象. (2)切换frame内容: 在 IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容. 如果需要将frame中的参数传回父窗口(注意不是opener,而是parent frame),可以在frme中使用parent来访问父窗口。例如:parent.document.form1.filename.value="Aqing"; 14.body问题 Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在. 15. 事件委托方法 IE:document.body.onload = inject; //Function inject()在这之前已被实现 Firefox:document.body.onload = inject(); 16. firefox与IE的父元素(parentElement)的区别 IE:obj.parentElement firefox:obj.parentNode 解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择. 17.cursor:hand VS cursor:pointer firefox不支持hand,但ie支持pointer 解决方法: 统一使用pointer 18.innerText在IE中能正常工作,但是innerText在firefox中却不行. 需用textContent。 解决方法: if(navigator.appName.indexOf("Explorer") > -1){ document.getElementById('element').innerText = "my text"; } else{ document.getElementById('element').textContent = "my text"; } 19. FireFox中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px。这个ie也是支持的。 20. ie,firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。 解决方法: //向table追加一个空行: var row = otable.insertRow(-1); var cell = document.createElement("td"); cell.innerHTML = " "; cell.className = "XXXX"; row.appendChild(cell); 21. padding 问题 padding 5px 4px 3px 1px FireFox无法解释简写, 必须改成 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px; 22. 消除ul、ol等列表的缩进时 样式应写成:list-style:none;margin:0px;padding:0px; 其中margin属性对IE有效,padding属性对FireFox有效 23. css透明 IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。 FF:opacity:0.6。 24. CSS圆角 IE:不支持圆角。 FF: -moz-border-radius:4px,或者-moz-border-radius-topleft:4px;-moz-border- radius-topright:4px;-moz-border-radius-bottomleft:4px;-moz-border- radius- bottomright:4px;。 25. CSS双线凹凸边框 IE:border:2px outset;。 FF: -moz-border-top-colors: #d4d0c8 white;-moz-border-left-colors: #d4d0c8 white;-moz-border-right-colors:#404040 #808080;-moz-border-bottom-colors:#404040 #808080; 26. 对select的options集合操作 枚举元素除了[]外,SelectName.options.item()也是可以的, 另外SelectName.options.length, SelectName.options.add/remove都可以在两种浏览器上使用。注意在add后赋值元素,否则会失败(本人试验如此)。 27. XMLHTTP的区别 //mf if (window.XMLHttprequest) //mf { xmlhttp=new XMLHttpRequest() xmlhttp. xmlhttp.open("GET",url,true) xmlhttp.send(null) } //ie else if (window.ActiveXObject) // code for IE { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") if (xmlhttp) { xmlhttp. xmlhttp.open("GET",url,true) xmlhttp.send() } } } 28. innerHTML的区别 Firefox不支持innerHTML, 解决办法可以如下 rng = document.createRange(); el = document.getElementById(elementid); rng.setStartBefore(el); htmlFrag = rng.createContextualFragment(content); while (el.hasChildNodes()) //清除原有内容,加入新内容 el.removeChild(el.lastChild); el.appendChild(htmlFrag); 29. img的src刷新问题 在 IE下可以用<img id="pic" onclick= "this.src= 'aa.php'" src="aa.php" style="cursor: pointer"/> 可以刷新图片,但在FireFox下不行。主要是缓存问题,在地址后面加个随机数就解决了。编辑onclick事件代码如下: "this.src=this.src+'?'+Math.random()" CSS对浏览器器的兼容性具有很高的价值,通常情况下IE和Firefox存在很大的解析差异,这里介绍一下兼容要点。 常见兼容问题: 1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行 3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中 4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width 5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式 6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了缺点是要控制内容不要换行 7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以 8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。 9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法: div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样: div{maring:30px;margin:28px} 重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important; 10.IE5 和IE6的BOX解释不一致 IE5下 div{width:300px;margin:0 10px 0 10px;} div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改 div{width:300px!important;width /**/:340px;margin:0 10px 0 10px} 关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:) 11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义 ul{margin:0;padding:0;} 就能解决大部分问题 注意事项: 1、float的div一定要闭合。 例如:(其中floatA、floatB的属性已经设置为float:left;) <#div id="floatA" ></#div> <#div id="floatB" ></#div> <#div id="NOTfloatC" ></#div> 这里的NOTfloatC并不希望继续平移,而是希望往下排。 这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。 在 <#div class="floatB"></#div> <#div class="NOTfloatC"></#div> 之间加上 <#div class="clear"></#div> 这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。 并且将clear这种样式定义为为如下即可: .clear{ clear:both;} 此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden; 当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。 例如某一个wrapper如下定义: .colwrapper{ overflow:hidden; zoom:1; margin:5px auto;} 2、margin加倍的问题。 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。 解决方案是在这个div里面加上display:inline; 例如: <#div id="imfloat"></#div> 相应的css为 #IamFloat{ float:left; margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/} 3、关于容器的包涵关系 很多时候,尤其是容器内有平行布局,例如两、三个float的div时,宽度很容易出现问题。在IE中,外层的宽度会被内层更宽的div挤破。一定要用Photoshop或者Firework量取像素级的精度。 4、关于高度的问题 如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事) 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 这句放置在另一句之上,上面已经提过 |
Firefox、IE对CSS的兼容性整理
1、firefox和IE对某些css样式的认定有不少区别,包括: ul和ol的默认padding值是不一样的,在Firefox中,padding-left默认值为40px左右,而IE中为0,一般设置ul{margin:0;padding:0;}就能解决大部分问题。 并列排列的多个元素(图片或者链接)的代码中的空格和回车会造成元素之间的间隙,而在firefox中和IE中显示是不一样的,IE显示空格(约8px)、firefox显示空格(约4px)。 对不规范代码的兼容情况不同,IE中漏掉的关闭符号对显示不造成影响,而firefox中就会形成错乱的布局。 firefox对于宽高尺寸的严格解析会造成与设置不匹配(超出)的图片或表格将原设置div撑大。 未定义id的div,在IE中会与div属性中的其他设置有关,而在firefox中的位置会于div在文件中位置有关,紧随前一个div出现。 设置为float的div在ie下设置的margin会加倍的,特别是margin-left,这是ie6的一个bug。解决的方法是在这个div里面加上display:inline; 如果是动态地添加内容,高度最好不要定义。浏览器可以自动伸缩,然而如果是静态的内容,高度最好定好。(似乎有时候不会自动往下撑开,不知道具体怎么回事) FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行。IE里设置text-align:center,就居中了,但在FF中不行。所以一般两个都要设置。 FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个height 和 width FF对于"!important"会自动优先解析,然而IE则会忽略.如下 .tabd{ 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 */ } FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。 2、针对firefox ie6 ie7的css样式 现在大部分都是用!important来hack,对于ie6和firefox测试可以正常显示, 但是ie7对!important可以正确解释,会导致页面没按要求显示!找到一个针 对IE7不错的hack方式就是使用“*+html”,现在用IE7浏览一下,应该没有问题了。 现在写一个CSS可以这样: #1 { color: #333; } /* Moz */ * html #1 { color: #666; } /* IE6 */ *+html #1 { color: #999; } /* IE7 */ 那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999。 3、firefox下多层嵌套时内层设置了浮动外层设置背景时背景不显示 这主要是内层设置浮动后外层高度在firefox下变为0,所以应该在外层与内层间再嵌一层,设置浮动和宽 度,然后给这个层设置背景(听说还有其他方法,感觉还是这方法好使) 4、属性选择器(这个不能算是兼容,是隐藏css的一个bug p[id]{}div[id]{} 这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用 属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的. 5、嵌套DIV:父DIV的高度不能根据子DIV自动变化的解决方案 <div id="parent"> <div id="content"> </div> </div> 当Content内容多时,即使parent设置了高度100%或auto,在不同浏览器下还是不能完好的自动伸展。 解决方案 <div id="parent"> <div id="content"></div> <div style="font: 0px/0px sans-serif;clear: both;display: block"> </div> </div> 在层的最下方产生一个高度为1的空格,可解除这个问题 |
发表评论
文章已被作者锁定,不允许评论。
相关推荐
在进行网页开发时,经常会遇到浏览器兼容性问题,尤其是在使用JavaScript编程语言的时候。不同浏览器之间的差异可能会影响到代码的正常运行。因此,解决这些兼容性问题就成为了网页开发者们必须面对的一个挑战。 ...
研究内容主要围绕HTML5的新特性,特别是表单控制、多媒体支持和浏览器兼容性进行深入探讨。 2.2 兼容性分析 2.2.1 主流浏览器对HTML5部分标签兼容表:不同的浏览器对HTML5新标签的支持程度不同,早期版本的IE浏览器...
在JavaScript开发中,浏览器兼容性问题常常困扰着开发者。本文主要探讨了JavaScript中与浏览器兼容性相关的几个关键点,特别是针对旧版浏览器如IE8及更早版本的问题。以下是相关知识点的详细说明: 1. `innerText` ...
1. **跨平台兼容性**:HTML5的多媒体标签能够实现在不同设备和浏览器之间的一致性表现,这为开发者提供了极大的便利。 2. **减少对外部插件的依赖**:不再需要安装额外的插件(如Flash)来支持多媒体内容,降低了...
在现代网页开发中,更推荐使用CSS和JavaScript框架(如Bootstrap、Flexbox或Grid)来实现类似的布局效果,它们具有更好的跨浏览器兼容性和可维护性。 对于需要支持IE10的项目,开发者应尽量避免使用`<frameset>`...
然而,IFRAME存在浏览器兼容性问题,不同的浏览器可能会导致显示效果不一致。此外,IFRAME在链接外部网站时也可能引发混乱,可能导致外部内容被错误地包含在框架内。 其次,JavaScript是一种广泛使用的客户端脚本...
* 浏览器兼容性问题 * 安全性问题 * 数据交换格式问题 AjAX技术的发展 Prospects包括: * 实时Web应用程序 * 移动应用程序 * 云计算 AjAX技术是一种基于Web的技术,它可以提高Web应用程序的用户体验、减少服务器...
技术的多样性使得开发者在选择技术栈时面临困惑,开发工具的成熟度、浏览器的默认行为、跨浏览器兼容性以及HTML5标准的完善程度,都是需要考虑的因素。然而,随着HTML5标准的不断发展和完善,以及相关技术和工具的日...
同时,HTML5和CSS3的标准化减少了跨浏览器兼容问题,提升了开发的便利性。 总的来说,HTML5和CSS3在网页设计中的新特性及优势主要体现在语义化、跨平台兼容性、用户体验提升、复杂布局的简化和视觉效果增强等方面。...
2005年,Adobe公司收购了Macromedia,并在面对Flash在移动端和浏览器的兼容性问题时,于2015年升级为Animate CC,支持HTML5 Canvas、WebGL等新的动画格式,从而扩展了其在WEB前端设计的应用范围。 **二、基于...
因此,开发者在使用时应当谨慎,并尽量配合标准属性进行渐进增强或优雅降级,确保跨浏览器的兼容性。同时,随着CSS规范的不断更新,一些私有属性可能会被标准化,例如,CSS Selectors Level 4中引入的`:placeholder-...
* 兼容性强:易语言web服务器html协议头可以支持大部分主流浏览器,例如QQ浏览器、360浏览器、百度浏览器、2345浏览器、IE浏览器等。 易语言web服务器html协议头是一个非常重要的web开发技术,广泛应用于各种web...
1. **跨浏览器兼容性**:JQuery在设计时充分考虑了不同浏览器之间的差异,确保代码能在多种浏览器上稳定运行,包括IE、Firefox、Chrome、Safari等。 2. **DOM操作简便**:通过简洁的语法,JQuery使得DOM元素的选择...
但需要注意浏览器兼容性,尽管现代浏览器普遍支持WebSocket,但在较旧的版本或某些特殊环境下可能需要提供降级方案,如Flash Socket或传统的Ajax长轮询。 8. **负载均衡与扩展**: 对于高并发的群聊应用,可能需要...
然而,由于不同的浏览器具有不同的实现和默认设置,这可能导致在不同浏览器上出现兼容性问题。本文将深入探讨jQuery中调用Ajax方法时在不同浏览器中可能遇到的问题,并提供相应的解决方案。 首先,让我们了解jQuery...
JavaScript动画模拟拖拽原理主要涉及到事件监听、坐标计算以及DOM操作的综合...需要注意的是,在实际开发中,还要考虑浏览器兼容性问题,以及在复杂场景下可能出现的各种边界条件,这些都需要在编码实践中逐一解决。
2. 性能问题:虽然优化得当,但响应式设计可能在某些老旧浏览器上遇到兼容性问题或性能瓶颈。 3. 复杂性增加:设计和开发过程可能会更加复杂,需要更多的时间和精力。 Part4:移动终端屏显两要素 移动终端屏幕显示...
在实际开发过程中,我们还需考虑浏览器兼容性问题。因此,我们需要有一种方法来区分IE浏览器和其他浏览器。可以通过判断JavaScript的功能属性来区分,但最常用的方法是检查用户代理字符串(user-agent string)。一...
Flex与JavaScript交互是一种常见的技术,尤其在开发富互联网应用程序(RIA)时,它允许Web页面中的Flash内容与HTML页面的...在实际开发中,确保在各种浏览器和安全设置下测试交互功能,以确保兼容性和稳定性。