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完全被讀入之後才存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章