服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

firefox浏览器兼容javascript脚本的方法

遇到了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错误。

扫描关注微信公众号