Firefox完全兼容Javascript脚本方法 - Go语言中文社区

Firefox完全兼容Javascript脚本方法


在Web开发设计中,我们经常能遇到各种浏览器之间的兼容性问题,其中IE与Firefox之间是最常见的,比如在IE中,XmlHttp.send(content)方法的content可以为空,而firefox则不能为空,应该用send(" "),否则会出现411错误。下面就介绍了让Firefox全面兼容Javascript的几种方法,仅供参考。

51CTO推荐阅读:Javascript解决常见浏览器兼容问题

1.window.event兼容脚本

  1. function getEvent(){ //获取浏览器事件,同时兼容ie和ff的写法   
  2.       if(document.all) return window.event;   
  3.          func=getEvent.caller;   
  4.          while(func!=null){   
  5.          var arg0=func.arguments[0];   
  6.          if(arg0){   
  7.              if((arg0.constructor==Event  arg0.constructor ==MouseEvent)   
  8.              (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){   
  9.       return arg0;   
  10.                 }   
  11.          }   
  12.      funcfunc=func.caller;   
  13.      }   
  14.      return null;   
  15. }  

每次用事件之前Firefox都需要用getEvent()获取一下,否则就是空

2.屏蔽Form提交事件

  1. event.returnValue=false;// for IE   
  2. evt.preventDefault();//for firefox  

3.获取事件源

  1. var source=event.srcElement //IE   
  2. var source=event.target //firefox  

4.添加事件兼容写法

  1. function addEvent(oElement,sEvent,func){   
  2.     if (oElement.attachEvent){   
  3.        oElement.attachEvent(sEvent,func);   
  4.     }   
  5.     else{   
  6.        sEventsEvent=sEvent.substring(2,sEvent.length);   
  7.        oElement.addEventListener(sEvent,func,false);   
  8.     }   
  9. }  

用法:addEvent(window,"onload",Start);

5.Firefox注册innerText写法

  1. //注册firefox innerText   
  2. HTMLElement.prototype.__defineGetter__("innerText",   
  3.    function(){   
  4.       var anyString = "";   
  5.       var childS = this.childNodes;   
  6.    for(var i=0; i if(childS[i].nodeType==1)   
  7.       anyString += childS[i].tagName=="BR" ? 'n' : childS[i].innerText;   
  8.    else if(childS[i].nodeType==3)   
  9.       anyString += childS[i].nodeValue;   
  10.    }   
  11.    return anyString;   
  12. }   
  13. );   
  14. HTMLElement.prototype.__defineSetter__("innerText",   
  15.    function(sText){   
  16.    this.textContent=sText;   
  17. }   
  18. );  

6.长度:FireFox长度必须加“px”,IE无所谓

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

8.XmlHttp

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

版权声明:本文来源51CTO,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:http://developer.51cto.com/art/201008/219759.htm
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 01:58:18
  • 阅读 ( 993 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢