gzyueqian
18529173453
首页 > 新闻中心 > > 正文

Firefox浏览器兼容Javascript脚本的方法

更新时间: 2008-07-02 09:28:29来源: 粤嵌教育浏览量:1135

  遇到了FireFox和IE脚本不兼容的问题

  1.window.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;
            }
  每次用事件之前Firefox都需要用getEvent()获取一下,否则就是空

  2.屏蔽Form提交事件
 

 

 

event.returnValue=false;// for IE
            evt.preventDefault();//for firefox
  3.获取事件源
 

 

 

var source=event.srcElement //IE
            var source=event.target //firefox
  4.添加事件兼容写法
 
function addEvent(oElement,sEvent,func){
            if (oElement.attachEvent){
            oElement.attachEvent(sEvent,func);
            }
            else{
            sEvent=sEvent.substring(2,sEvent.length);
            oElement.addEventListener(sEvent,func,false);
            }
            }
  用法:addEvent(window,"onload",Start);

  5.Firefox注册innerText写法
 

 

 

//注册firefox innerText
            HTMLElement.prototype.__defineGetter__("innerText",
            function(){
            var anyString = "";
            var childS = this.childNodes;
            for(var i=0; i if(childS[i].nodeType==1)
            anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
            else if(childS[i].nodeType==3)
            anyString += childS[i].nodeValue;
            }
            return anyString;
            }
            );
            HTMLElement.prototype.__defineSetter__("innerText",
            function(sText){
            this.textContent=sText;
            }
            );
  6.长度:FireFox长度必须加“px”,IE无所谓

  7.父控件下的子控件:IE是“children”,FireFox是“childNodes”

  8.XmlHttp

  在IE中,XmlHttp.send(content)方法的content可以为空,而firefox则不能为空,应该用send(" "),否则会出现411错误。






免费预约试听课