ie和firefox浏览器在网页编程方面的区别及解决方法

1.firefox不支持对象加事件的函数名,如:以下代码在IE中能正常显示,但在firefox中则不能;
function.window.onload(){
      alert("onload");
}

改为用:
window.onload = fnShow;
function fnShow(){
      alert("onload");
}

或直接写为:
window.onload = function (){
      alert("onload");
}
//-------

2.flash,要设置embed的src属性才能正常显示;如:<embed src="../images/easewe.swf";
    但在IE中要设置param name="src"的value值才能显示;如:<PARAM NAME="Src" VALUE="./images/easewe.swf"">
--------
所以flash要同时设置这两个属性;

3.制作细线表格:
      在IE中可以用bordercolordark="网页背景色",使得表格看起来很细;
      但在firefox中不起作用;需给表格增加样式:style="border-collapse:collapse;";
      所以要在ie和firefox中都显示细表格,则应该给表格加上样式style="border-collapse:collapse;";

4.在IE中11px和12px显示的大小是一样的,但在firefox中11px会比12px小,导致字在firefox中比ie中小;
    所以都需设置12px;

5.集合类对象问题
IE下,可以使用()或[]获取集合类对象;Firefox下,只能使用[]获取集合类对象.
解决方法:统一使用[]获取集合类对象.

6.自定义属性问题
IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.

7.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.

8.event.srcElement问题
IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性.
解决方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.

9.window.location.href问题

IE或者Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.
解决方法:使用window.location来代替window.location.href.

10.访问frame对象:
IE:使用window.frameId或者window.frameName来访问这个frame对象.
Firefox:只能使用window.frameName来访问这个frame对象.
另外,在IE和Firefox中都可以使用window.document.getElementByIdx("frameId")来访问这个frame对象.

11.window.event问题

window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用.
解决方法:
IE:
<input name="Button8_1" type="button" value="IE" onclick="javascript:gotoSubmit8_1()"/>
...
<script language="javascript">
function gotoSubmit8_1() {
...
alert(window.event); //use window.event
...
}
</script>
IE&Firefox:
<input name="Button8_2" type="button" value="IE" onclick="javascript:gotoSubmit8_2(event)"/>
...
<script language="javascript">
function gotoSubmit8_2(evt) {
...
evt=evt?evt:(window.event?window.event:null);
alert(evt); //use evt
...
}
</script>

下面还有个通用的得到event的方法
function getEvent() //同时兼容ie和ff的写法
  
      if(document.all)     return window.event;     
      func=getEvent.caller;         
      while(func!=null){   
          var arg0=func.arguments[0];
          if(arg0)
          {
            if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation))
             
            return arg0;
            }
          }
          func=func.caller;
      }
      return null;
}
到别的方法去直接调用就好了
function move()
{
      var evt=getEvent();
      ......      
}

 

关于InnerText在FF下的兼容性
2007-11-16 14:44

 

<script language="javascript">
function testInnerText(){
if(navigator.appName.indexOf("Explorer") > -1){
document.getElementByIdx('element').innerText = "my text";
} else{
document.getElementByIdx('element').textContent = "my text";
}
}
</script>

posted on 2010-07-05 15:46  ruily  阅读(881)  评论(0编辑  收藏  举报

导航