首页 > 技术文章 > 【积累】各浏览器之间的差异

JhoneLee 2013-11-26 18:34 原文

1.在js中修改元素background-size样式

火狐:obj.style['backgroundSize']='XXX';

谷歌及其他:obj.style['background-size']='XXX'; 或obj.style['backgroundSize']='XXX';

2.火狐无法再JS中操作float,需要在样式表中写。

3.360浏览器这个傻逼用useragent检测出来是chrome,但是它的内核调用却是safari,太屎了!

4.Array对象支持差异

   (1)join方法

   假设有一个数组:arr={'a','b','c'}

   其他浏览器:arr.join(undefind); //a,b,c

   IE7:arr.join(undefind);//aundefindbundefindc

   (2)indexof和lastIndexof方法

    IE8及以下不支持该方法。

5.IE和FF差异

(1) window.event:

表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象

(2) 获取事件源

IE用srcElement获取事件源,而FF用target获取事件源

(3) 添加,去除事件

IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)

FF:element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)

(4) 获取标签的自定义属性

IE:div1.value或div1[“value”]

FF:可用div1.getAttribute(“value”)

(5) document.getElementByName()和document.all[name]

IE;document.getElementByName()和document.all[name]均不能获取div元素

FF:可以

(6) input.type的属性

IE:input.type只读

FF:input.type可读写

(7) innerText textContent outerHTML

IE:支持innerText, outerHTML

FF:支持textContent

(8) 是否可用id代替HTML元素

IE:可以用id来代替HTML元素

FF:不可以

(9)document appendChild的问题

IE:直接document.appendChild就可以了。

FF:必须是document.body.appendChild

(10)

IE:var a=function abc(){alert('aa');};    a(); abc();都会弹出aa,但是 a!=abc

FF:var a=function abc(){alert('aa');};    a(); abc(); a会弹出aa,abc会提示这个函数没有定义,但是 a==abc却成立。

(11)

IE:var tt=eval; tt('foo=1');  如果该eval在局部作用域中且局部作用域中有foo变量且有全局变量foo,foo就会改变这个局部foo变量的值.

FF:var tt=eval;tt('foo=1');   如果该eval在局部作用域中且局部作用域中有foo变量且有全局变量foo,foo就会改变这个全局foo变量的值.

6.标签的onload支持

IE下支持标签的onreadystatechange事件而不支持onload事件,且readyState有 loading loaded complete三个值。

其余浏览器支持onload事件而不支持onreadystatechange事件

opera则都支持。

 7.自定义属性支持

IE:如果是自定义属性,写在行间也是没有问题的,如 <img  ff="1"/>

除IE内核之外的浏览器:OPERA FF CHROME 不支持行间自定义属性, 只有写在javascript里,如 : oImg["ff"]=1;

8.input button 标签去border后的样式

chrome:为了显示按钮的立体感,它会故意把按钮向规定的坐标下置1px

其他浏览器:不会这样。

推荐阅读