IE和firefox浏览器在网页编程方面的区别

1.firefox不支持对象加事件的函数名,如:以下代码在IE中能正常显示,但在firefox中则不能;

 
function.window.onload(){   
    alert("onload");   

function.window.onload(){
    alert("onload");
}


改为用:

 
window.onload = fnShow;   
function fnShow(){   
    alert("onload");   

window.onload = fnShow;
function fnShow(){
    alert("onload");
}


或直接写为:

 
window.onload = function (){   
    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.getElementById("frameId")来访问这个frame对象.

11.window.event问题

window.event只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用.
解决方法:
IE:

 
<input name="Button8_1" type="button" value="IE" />   
...   
<script language="javascript">   
function gotoSubmit8_1() {   
...   
alert(window.event); //use window.event   
...   
}   
</script> 
<input name="Button8_1" type="button" value="IE" />
...
<script language="javascript">
function gotoSubmit8_1() {
...
alert(window.event); //use window.event
...
}
</script>

IE&Firefox:
<input name="Button8_2" type="button" value="IE" />   
...   
<script language="javascript">   
function gotoSubmit8_2(evt) {   
...   
evt=evt?evt:(window.event?window.event:null);   
alert(evt); //use evt   
...   
}   
</script> 
<input name="Button8_2" type="button" value="IE" />
...
<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 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();   
    ......         
}

你可能感兴趣的:(JavaScript,编程,浏览器,IE,firefox)