css 多浏览器兼容性问题及解决方案
一、document.formname.item(”itemname”) 问题
问题说明:ie下,可以使用 document.formname.item(”itemname”) 或 document.formname.elements [elementname];firefox 下,只能使用document.formname.elements[elementname]。
解决方法:统一使用document.formname.elements[elementname]。
二、集合类对象问题
问题说明:ie下,可以使用 () 或 [] 获取集合类对象;firefox下,只能使用 [ ]获取集合类对象。
解决方法:统一使用 [] 获取集合类对象。
三、自定义属性问题
问题说明:ie下,可以使用获取常规属性的方法来获取自定义属性,也可以使用 getattribute() 获取自定义属性;firefox下,只能使用 getattribute() 获取自定义属性。
解决方法:统一通过 getattribute() 获取自定义属性。
四、eval(”idname”)问题
问题说明:ie下,可以使用 eval(”idname”) 或 getelementbyid(”idname”) 来取得 id 为 idname 的html对象;firefox下,只能使用 getelementbyid(”idname”) 来取得 id 为 idname 的html对象。
解决方法:统一用 getelementbyid(”idname”) 来取得 id 为 idname 的html对象。
五、变量名与某html对象id相同的问题
问题说明:ie下,html对象的id可以作为 document 的下属对象变量名直接使用,firefox下则不能;firefox下,可以使用与html对象id相同的变量名,ie下则不能。
解决方法:使用 document.getelementbyid(”idname”) 代替 document.idname。最好不要取html对象id相同的变量名,以减少错误;在声明变量时,一律加上var关键字,以避免歧义。
六、const问题
问题说明:firefox下,可以使用const关键字或var关键字来定义常量;ie下,只能使用var关键字来定义常量。
解决方法:统一使用var关键字来定义常量。
七、input.type属性问题
问题说明:ie下 input.type 属性为只读;但是firefox下 input.type 属性为读写。
解决办法:不修改 input.type 属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。
八、window.event问题
问题说明:window.event 只能在ie下运行,而不能在firefox下运行,这是因为firefox的event只能在事件发生的现场使用。
解决方法:在事件发生的函数上加上event参数,在函数体内(假设形参为evt)使用 var myevent = evt?evt:(window.event?window.event:null)
示例: