js在firefox和ie中的区别(一)

一、getElementsByName在ie中获取不到子集。
function custom_getElementByName(){
    //firefox中直接获取
    var nav_ul=document.getElementsByName('nav_li');        
    var arr_len=nav_ul.length;
    //ie中先取所有类似元素,再去判断该元素的name值是否是我们需要的,如果是存储到数组中
    if(arr_len==0){
        nav_ul = new Array();
        var nav_ul_ie=document.getElementsByTagName('li');            
        for (var iIE = 0; iIE < nav_ul_ie.length; iIE++){        
             if (nav_ul_ie[iIE].getAttribute("name") == "nav_li"){
                nav_ul[nav_ul.length] = nav_ul_ie[iIE];
            }
        }
        arr_len=nav_ul.length;
    }
    return nav_ul;
}

二、通过js来判断浏览器的版本(通过解析userAgent中的特征来判断浏览器类型)
function getBrowserType(){
    var Sys = {};
    var ua = navigator.userAgent.toLowerCase();
    var s;
   (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
   (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
   (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
   (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
   (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
   //以下进行测试
   if (Sys.ie) document.write('IE: ' + Sys.ie);
   if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
   if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
   if (Sys.opera) document.write('Opera: ' + Sys.opera);
   if (Sys.safari) document.write('Safari: ' + Sys.safari);
}

三、获取位置,在firefox中,无法使用object.style.pixelLeft,只能用object.style.left (top一样) 。
pixelLeft返回定位元素左边界偏移量的整数像素值.pixelLeft意思就是这个对象离左边的距离。
left的值是String,left(x)是带单位的值;pixelLeft的值是Integer,是不带单位
function getObjectLeft(){
     var p = new function(){this.left;this.top;};
     p.left = parseInt(obj.style.left.slice(0,-2),10);
     p.top = parseInt(obj.style.top.slice(0,-2),10);
    
     //pixelLeft在firefox不支持
     p.left=currentMoveObj.style.pixelLeft;
     p.top=currentMoveObj.style.pixelTop;
     return p;
}

四、透明度设置在firefox和ie中不同
function setOpcity(obj,value){    
     // alpha(opacity=50)仅被IE支持       
     if(isMSIE){    
       obj.style.filter="alpha(opacity="+value+")";    
     }else{    
       obj.style.MozOpacity=value*0.01;    
     }    
}

五、禁止文本选择的方法
ie中onselectstart="return false"
firefox中可以通过css样式去控制-moz-user-select:none;

六、其他差异
1.form对象ie可以通过forms('fname')获取到form对象,但是firefox不可以
解决方案:用下标来识别过forms('id')
2.在ie中div对象可以使用id作为对象的变量名直接使用,但是firefox中不可以
解决方案:获得对象的方法不管是不是DIV对象,都使用getElementById方法。
3.IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口,但是MF不支持。
解决办法:直接使用open(pageURL,name,parameters)方式打开新窗口。
4.event.x 与 event.y 问题,在IE 中,event 对象有 x, y 属性,MF中没有。
解决方法:在MF中,与event.x 等效的是 event.pageX。但event.pageX IE中没有。故采用 event.clientX 代替 event.x。在IE 中也有这个变量。event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。如果要完全一样,可以稍麻烦些:mX = event.x ? event.x : event.pageX;然后用 mX 代替 event.x
5.body 对象MF的body在body标签没有被浏览器完全读入之前就存在,而IE则必须在body完全被读入之后才存在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值