IE和firefox火狐在JS、css兼容区别
1.firefox不能对innerText支持。
firefox支持innerHTML但却不支持innerText,它支持textContent来实现innerText,不过默认把多余的空格也保留了。如果不用textContent,如果字符串里面不包含HTML代码也可以用innerHTML代替。
2.禁止选取网页内容:
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none
3.滤镜的支持(例:透明滤镜):
IE:filter:alpha(opacity=10);
firefox:-moz-opacity:.10;
4.捕获事件:
IE:obj.setCapture() 、obj.releaseCapture()
Firefox:document.addEventListener("mousemove",mousemovefunction,true);
document.removeEventListener("mousemove",mousemovefunction,true);
5.获取鼠标位置:
IE:event.clientX、event.clientY
firefox:需要事件函数传递事件对象
obj.onmousemove=function(ev){
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>X= ev.pageX;Y=ev.pageY;<br>
}<br>
6.DIV等元素的边界问题:<br>
比如:设置一个div的CSS::{width:100px;height:100px;border:#000000 1pxsolid;}<br>
IE中:div的宽度(包括边框宽度):100px,div的高度(包括边框宽度):100px;<br>
而firefox:div的宽度(包括边框宽度):102px,div的高度(包括边框宽度):102px;<br>
所以在做这个兼容IE和firefox的拖动窗口时,在js和css的写法上要动点脑筋,给大家两个小技巧<br>
一.判断浏览器类型:<br>
var isIE=document.all? true:false;<br>
我写了一个变量,如果支持document.all语法那么isIE=true,否则isIE=false<br>
二.在不同浏览器下的CSS处理:<br>
一般可以用!important来优先使用css语句(仅firefox支持)<br>
比如:{border-width:0px!important;border-width:1px;}<br>
在firefox下这个元素是没有边框的,在IE下边框宽度是1px<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>1.document.formName.item("itemName") 问题<br>
问题说明:IE下,可以使用 document.formName.item("itemName") 或document.formName.elements["elementName"];Firefox下,只能使用document.formName.elements["elementName"]。<br>
解决方法:统一使用document.formName.elements["elementName"]。<br>
2.集合类对象问题<br>
问题说明:IE下,可以使用 () 或 [] 获取集合类对象;Firefox下,只能使用 [ ]获取集合类对象。<br>
解决方法:统一使用 [] 获取集合类对象。<br>
3.自定义属性问题<br>
问题说明:IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getAttribute()获取自定义属性;Firefox下,只能使用 getAttribute() 获取自定义属性。<br>
解决方法:统一通过 getAttribute() 获取自定义属性。<br>
4.eval_r("idName")问题<br>
问题说明:IE下,可以使用 eval_r("idName") 或 getElementById("idName") 来取得 id 为idName 的HTML对象;Firefox下,只能使用 getElementById("idName") 来取得 id 为idName 的HTML对象。<br>
解决方法:统一用 getElementById("idName") 来取得 id 为 idName 的HTML对象。<br>
5.变量名与某HTML对象ID相同的问题<br>
问题说明:IE下,HTML对象的ID可以作为 document的下属对象变量名直接使用,Firefox下则不能;Firefox下,可以使用与HTML对象ID相同的变量名,IE下则不能。<br>
解决方法:使用 document.getElementByIdx_xx_x("idName") 代替document.idName。最好不要取HTML对象ID相同的变量名,以减少错误;在声明变量时,一律加上var关键字,以避免歧义。<br>
6.const问题<br>
问题说明:Firefox下,可以使用const关键字或var关键字来定义常量;IE下,只能使用var关键字来定义常量。<br>
解决方法:统一使用var关键字来定义常量。<br>
7.input.type属性问题<br>
问题说明:IE下 input.type 属性为只读;但是Firefox下 input.type 属性为读写。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>解决办法:不修改 input.type属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。<br>
8.window.event问题<br>
问题说明:window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用。<br>
解决方法:在事件发生的函数上加上event参数,在函数体内(假设形参为evt)使用 var myEvent =evt?evt:(window.event?window.event:null)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>示例:<input type="button"onclick="doSomething(event)"/><br>
<script language="javascript"><br>
function doSomething(evt) {<br>
var myEvent = evt?evt:(window.event?window.event:null)<br>
...<br>
}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>9.event.x与event.y问题<br>
问题说明:IE下,even对象有x、y属性,但是没有pageX、pageY属性;Firefox下,even对象有pageX、pageY属性,但是没有x、y属性。<br>
解决方法:var myX = event.x ? event.x : event.pageX; var myY = event.y ?event.y:event.pageY;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>如果考虑第8条问题,就改用myEvent代替event即可。<br>
10.event.srcElement问题<br>
问题说明:IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性。<br>
解决方法:使用srcObj = event.srcElement ? event.srcElement :event.target;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>如果考虑第8条问题,就改用myEvent代替event即可。<br>
11.window.location.href问题<br>
问题说明:IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location。<br>
解决方法:使用 window.location 来代替 window.location.href。当然也可以考虑使用location.replace()方法。<br>
12.模态和非模态窗口问题<br>
问题说明:IE下,可以通过showModalDialog和showModelessDialog打开模态和非模态窗口;Firefox下则不能。<br>
解决方法:直接使用 window.open(pageURL,name,parameters) 方式打开新窗口。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。如果需要父窗口控制子窗口的话,使用varsubWindow = window.open(pageURL,name,parameters); 来获得新开的窗口对象。<br>
13.frame和iframe问题<br>
以下面的frame为例:<br>
<frame src="xxx.html" id="frameId" name="frameName"/><br>
(1)访问frame对象<br>
IE:使用window.frameId或者window.frameName来访问这个frame对象;<br>
Firefox:使用window.frameName来访问这个frame对象;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>解决方法:统一使用 window.document.getElementByIdx_xx_x("frameId")来访问这个frame对象;<br>
(2)切换frame内容<br>
在IE和Firefox中都可以使用window.document.getElementByIdx_xx_x("frameId").src ="xxx.html"或window.frameName.location = "xxx.html"来切换frame的内容;<br>
如果需要将frame中的参数传回父窗口,可以在frame中使用parent关键字来访问父窗口。<br>
14.body载入问题<br>
问题说明:Firefox的body对象在body标签没有被浏览器完全读入之前就存在;而IE的body对象则必须在body标签被浏览器完全读入之后才存在。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注] 这个问题尚未实际验证,待验证后再来修改。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注]经验证,IE6、Opera9以及FireFox2中不存在上述问题,单纯的JS脚本可以访问在脚本之前已经载入的所有对象和元素,即使这个元素还没有载入完成。<br>
15. 事件委托方法<br>
问题说明:IE下,使用 document.body.onload = inject; 其中functioninject()在这之前已被实现;在Firefox下,使用 document.body.onload =inject();<br>
解决方法:统一使用 document.body.onload=new Function('inject()'); 或者document.body.onload = function(){}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注意] Function和function的区别<br>
16.访问的父元素的区别<br>
问题说明:在IE下,使用 obj.parentElement 或 obj.parentNode访问obj的父结点;在firefox下,使用 obj.parentNode 访问obj的父结点。<br>
解决方法:因为firefox与IE都支持DOM,因此统一使用obj.parentNode 来访问obj的父结点。<br>
17.cursor:hand VS cursor:pointer<br>
问题说明:firefox不支持hand,但ie支持pointer ,两者都是手形指示。<br>
解决方法:统一使用pointer。<br>
18.innerText的问题.<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>问题说明:innerText在IE中能正常工作,但是innerText在FireFox中却不行。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>解决方法:在非IE浏览器中使用textContent代替innerText。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>示例:<br>
if(navigator.appName.indexOf("Explorer") >-1){<br>
document.getElementByIdx_xx_x('element').innerText = "my text";<br>
} else{<br>
document.getElementByIdx_xx_x('element').textContent = "mytext";<br>
}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注] innerHTML 同时被ie、firefox等浏览器支持,其他的,如outerHTML等只被ie支持,最好不用。<br>
19. 对象宽高赋值问题<br>
问题说明:FireFox中类似 obj.style.height = imgObj.height 的语句无效。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>解决方法:统一使用 obj.style.height = imgObj.height + 'px';<br>
20. Table操作问题<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>问题说明:ie、firefox以及其它浏览器对于 table标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChild方法也不管用。<br>
解决方法:<br>
//向table追加一个空行:<br>
var row = otable.insertRow(-1);<br>
var cell = document.createElement_x_x("td");<br>
cell.innerHTML = "";<br>
cell.className = "XXXX";<br>
row.appendChild(cell);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注] 由于俺很少使用JS直接操作表格,这个问题没有遇见过。建议使用JS框架集来操作table,如JQuery。<br>
21. ul和ol列表缩进问题<br>
消除ul、ol等列表的缩进时,样式应写成:list-style:none;margin:0px;padding:0px;<br>
其中margin属性对IE有效,padding属性对FireFox有效。← 此句表述有误,详细见↓<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[注] 这个问题尚未实际验证,待验证后再来修改。<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
总的来说,"IE与Firefox的CSS兼容大全"这个资源包含了大量关于如何在两者之间实现一致显示的技巧和解决方案,对于开发者来说是一份非常有价值的参考资料。通过学习这份教程,开发者能更好地理解这两种浏览器的差异,...
### Javascript的IE与Firefox(火狐)兼容性解决方案 在Web开发过程中,浏览器兼容性问题一直是开发者们关注的重点之一。由于不同的浏览器对于Web标准的支持程度存在差异,这导致了同样的代码在不同浏览器中的表现...
标题中的“让CSS兼容IE和Firefox的技巧集合”是指在网页设计中,针对Internet Explorer(IE)和Firefox这两种浏览器之间CSS样式兼容性问题的解决策略。描述中的“嘿呌,IE不再是个bug”暗示了这些技巧能帮助开发者...
再者,CSS样式和JavaScript的交互在IE和Firefox上也有区别。IE有时会忽视标准的style属性,而是使用专有的currentStyle属性来获取元素的样式,而Firefox使用window.getComputedStyle()。此外,对于某些CSS属性,如...
在网页设计中,CSS(层叠样式表)的兼容性问题常常困扰着开发者,尤其是在处理IE(Internet Explorer)和Firefox这两个浏览器之间的差异时。本文主要针对这些差异提供了一些实用的技巧,帮助开发者解决常见的CSS兼容...
标题与描述均聚焦于“IE和Firefox在css,JavaScript方面的兼容性”,这涉及到网页开发中一个重要的议题:浏览器兼容性。在web开发中,确保代码能在不同浏览器上正常运行是至关重要的,因为用户可能使用各种不同的...
特别是在早期的Web时代,Internet Explorer(简称IE)与Mozilla Firefox(简称火狐)这两款浏览器之间存在着显著的差异,这使得页面设计师不得不花费大量时间去解决它们之间的兼容性问题。本文将详细介绍如何使网站...
### IE与Firefox的CSS兼容大全 #### 引言 随着Web技术的发展,浏览器之间的差异逐渐成为Web开发过程中不可忽视的问题之一。Internet Explorer(IE)与Mozilla Firefox作为两款主流的浏览器,在处理CSS样式时存在...
本文将深入探讨解决CSS在IE和Firefox之间兼容性问题的一些关键技巧。 首先,理解盒模型差异是解决兼容性问题的第一步。IE6、7使用了其独有的“怪异盒模型”,其中元素宽度包括了边框和内填充,而Firefox等其他...
这个"CSS兼容IE和Firefox的技巧集合"压缩包提供了针对这两种浏览器的兼容性解决方案。 首先,我们要理解浏览器之间的差异主要源于对CSS标准的实现不一致。例如,IE常常遵循其自己的盒模型,而Firefox等现代浏览器...
以上只是JavaScript在IE与Firefox中兼容性问题的一部分,实际开发中可能遇到更多细节。解决这些问题需要对两种浏览器的特性有深入理解,并使用条件注释、polyfills和现代JavaScript库(如jQuery)来确保代码在各种...
在Web开发中,JavaScript(JS)和CSS的跨浏览器兼容性是开发者必须面对的重要挑战,尤其是针对用户基数庞大的Internet Explorer(IE)和Mozilla Firefox(MF)。本文将详细介绍一些常见的兼容性问题及解决方案。 ...
然而,由于浏览器之间的兼容性问题,mxGraph在某些老旧版本的Internet Explorer(IE)和Firefox上可能会遇到挑战。"mxGraph破解包含ie和firefox"的描述暗示了我们正在处理如何让mxGraph在这些特定浏览器上正常运行的...
以下是一些常见的JavaScript在IE和Firefox上的兼容性问题及其解决策略: 1. **事件处理**:IE使用attachEvent方法添加事件监听器,而Firefox则使用addEventListener。为确保兼容,可以创建一个跨浏览器的事件处理...
JavaScript 和 CSS 在不同的浏览器之间可能存在兼容性问题,尤其是在 Internet Explorer (IE) 和 Mozilla Firefox 这两个浏览器中。本文将详细探讨这些差异,并提供相应的解决策略,以确保网站在各种浏览器中都能...
【CSS入门教程:IE和Firefox浏览器CSS兼容性技巧】 在网页设计中,CSS(层叠样式表)扮演着至关重要的角色,它使得我们能够控制页面的布局和样式。然而,不同浏览器之间对于CSS的支持程度和解析方式存在差异,尤其...
这个问题尤其体现在IE(Internet Explorer)和Firefox这两个流行的浏览器之间。本文档将深入探讨IE与Firefox之间的兼容性问题,并提供解决策略。 IE与Firefox在解析HTML、CSS和JavaScript时的差异主要源于它们对W3C...
"JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)"是一个专门为JavaScript环境设计的,旨在解决跨浏览器兼容性问题的日期选择工具。这个组件的目标是确保在不同浏览器如Internet Explorer(IE)、Firefox、...