一、getElementsByName在ie中获取不到子集。
二、通过js来判断浏览器的版本(通过解析userAgent中的特征来判断浏览器类型)
三、获取位置,在firefox中,无法使用object.style.pixelLeft,只能用object.style.left (top一样) 。
pixelLeft返回定位元素左边界偏移量的整数像素值.pixelLeft意思就是这个对象离左边的距离。
left的值是String,left(x)是带单位的值;pixelLeft的值是Integer,是不带单位
四、透明度设置在firefox和ie中不同
五、禁止文本选择的方法
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完全被读入之后才存在
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完全被读入之后才存在