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完全被讀入之後才存在