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