| 订阅 | 在线投稿
分享
 
 
 

Firefox浏览器兼容JS脚本供参考

来源:互联网  宽屏版  评论
2008-06-01 02:12:40

最近做了一个项目,遇到了FireFox和IE脚本不兼容的问题,为此从网上搜集了部分兼容的脚本,另外自己也摸索了一点,原本写在了自己另外一个博客里,现拷过来供大家参考,原文

1.window.event兼容脚本

2.屏蔽Form提交事件

3.获取事件源

4.添加事件兼容写法

5.Firefox注册innerText写法

6.长度

7.父控件下的子控件

8.XmlHttp

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错误

 
最近做了一个项目,遇到了FireFox和IE脚本不兼容的问题,为此从网上搜集了部分兼容的脚本,另外自己也摸索了一点,原本写在了自己另外一个博客里,现拷过来供大家参考,原文 1.window.event兼容脚本 2.屏蔽Form提交事件 3.获取事件源 4.添加事件兼容写法 5.Firefox注册innerText写法 6.长度 7.父控件下的子控件 8.XmlHttp 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错误
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有