您现在的位置是:网站首页> 编程资料编程资料
IE和FF在对js支持的不同(整理)及解决方法浅谈原生页面兼容IE9问题的解决方案新版chrome浏览器设置允许跨域的实现css hack之\9和\0就可能对hack IE11\IE9\IE8无效css区分ie8/ie9/ie10/ie11 chrome firefox的代码解决CSS浏览器兼容性问题的4种方案常见的浏览器兼容性问题(小结)border-radius IE8兼容处理的方法浅谈遇到的几个浏览器兼容性问题base64图片在各种浏览器的兼容性处理 对常见的css属性进行浏览器兼容性总结(推荐)
2021-09-07
983人已围观
简介 众所周知IE和FF在对js支持不尽相同,本文整理了一些常用方法及属性在IE和FF中的不同实现,对此感兴趣的朋友可以参考下,希望对大家学习IE和FF的js兼容有所帮助
1.window.event
IE:有window.event对象
FF:没有window.event对象,可以通过函数的参数传递event对象。如onclick=clickHandler(event)
解决办法:var event = event || window.event;
2. 鼠标当前坐标
IE:event.x和event.y
FF:event.pageX和event.pageY
解决办法:采用通用属性:event.clientX和event.clientY属性;
3. 鼠标坐标加上滚动条滚过的距离
IE:event.offsetX和event.offsetY
FF:event.layerX和event.layerY
解决办法:
3. event.srcElement
IE:event对象有srcElement属性,但是没有target属性;
FF:event对象有target属性,但没有srcElement属性
解决办法:使用obj = event.srcElement ? event.srcElement : event.target;来代替IE下的event.srcElement或者FF下的event.target(注意event的兼容性);
4.event.toElement
IE:event对象有toElement属性,但没有relatedTarget属性
FF:event对象没有有toElement属性,但有relatedTarget属性
解决办法:var target = e.relatedTarget || e.toElement;
5. 标签的x和y的坐标位置,style.posLeft 和 style.posTop
IE:有
FF:没有
解决办法:用通用属性obj.offsetLeft 和 obj.offsetTop
6. 窗体的高度和宽度
IE:document.body.offsetWidth 和 document.body.offsetHeight。注意,此时页面一定要有body标签。
FF:window.innerWidth 和 window.innerHeight,以及 document.documentElement.clientWidth 和 document.documentElement.clientHeight。
解决办法:通用属性 document.body.clientWidth 和 document.body.clientHeight;
7. 添加事件
IE:element.attachEvent('onclick',function)
FF:element.addEventListener('click',function,true)
解决办法:element.onclick = function.虽然都可以使用click事件。但onclick和上面两种方法效果是不一样的。onclick只有执行一个过程,而attachEvent 和 addEventListener执行的是一个过程列表,也就是多个过程。
如:element.attachEvent('onclick',func1); element.attachEvent("onclick", func2)这样func1和func2都会被执行。
8. 标签的自定义属性
IE:如果给标签div1定义了一个属性value,可以div1.value 和 div1["value"]取得该值
FF:不能用div1.value 和div1["value"]
解决办法:div1.getAttribute('value')
9. document.form.item
IE:现有问题,document.formName.item("itemName") 这样的语句,不能在 FF 下运行
FF:不支持
解决办法: document.formName.elements["elementName"]
10. 集合/数组类对象问题
IE:有许多集合类对象取用时用()
FF:不能这样取用
解决办法:改用[]作为下标运算。
如:document.forms("formName") 改为 document.forms["formName"]。document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]
11. HTML对象的id作为对象名的问题
IE:HTML对象的id可以作为document的下属变量名直接使用
FF:需要用getElementById()方法
解决办法:用getElementById('idName')代替idName作为对象变量使用
12. 用idName字符串取得对象的问题
IE:利用eval(idName)可以取得 id 为 idName 的HTML对象。
FF:不支持
解决办法:getElementById(idName) 代替 eval(idName)
13. 变量名与某 HTML 对象 id 相同的问题
IE:因为HTML对象id 在IE中直接调用,所以变量名不能和id相同
FF:可以使用变量名和id相同
解决办法,声明变量时一律加上 var ,以避免歧义(最好id和变量名不要相同)。
14. document.getElementsByName() 和 document.all[name]
IE:getElementsByName()、document.all[name] 均不能用来取得 div 元素
FF:可以兼容document.all, 但会生成一条警告。
解决办法:可以用getElementById() 或者 getElementByTagName()来代替
15. input.type属性问题
IE:input.type属性为只读
FF:input.type属性为读写
16. window.location.href
IE:(FF2.0以下),可以使用window.location 或 window.location.href ; FF 1.5下只能使用window.location
解决办法:使用window.location 来代替 window.location.href
17. 模态和非模态窗口问题
IE:可以通过 showModalDialog 和 showModelessDialog 打开模态和非模态窗口
FF:不支持
解决办法:直接使用window.open(pageURL, name, parameters) 方式打开新窗口,如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。
如:var parWin = window.opener; parWin.document.getElementById('title').value = 'My Title';
18. body
IE:body必须在body标签被浏览器完全读入后才存在
FF:body在body标签没有被浏览器完全读入之前就存在
19. 事件委托方法
IE:document.body.onload = init;
FF:document.body.onload = init();
解决办法:统一使用 document.body.onload = new Function('init()'); 或者 docuement.body.onload = function(){/* 这里是代码 */}
20. 父元素的区别
IE:obj.parentElement;
FF :obj.parentNode
解决办法:因为FF与IE都支持DOM,所以可以都使用obj.parentNode
22.innerText在IE中能正常工作,但是innerText在FF中却不行. 需用textContent
23. FF中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px。这个IE也是支持的
24. 父节点、子节点和删除节点
IE:parentElement、parement.children,element.romoveNode(true)。
FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。
IE:有window.event对象
FF:没有window.event对象,可以通过函数的参数传递event对象。如onclick=clickHandler(event)
解决办法:var event = event || window.event;
2. 鼠标当前坐标
IE:event.x和event.y
FF:event.pageX和event.pageY
解决办法:采用通用属性:event.clientX和event.clientY属性;
3. 鼠标坐标加上滚动条滚过的距离
IE:event.offsetX和event.offsetY
FF:event.layerX和event.layerY
解决办法:
复制代码
代码如下:3. event.srcElement
IE:event对象有srcElement属性,但是没有target属性;
FF:event对象有target属性,但没有srcElement属性
解决办法:使用obj = event.srcElement ? event.srcElement : event.target;来代替IE下的event.srcElement或者FF下的event.target(注意event的兼容性);
4.event.toElement
IE:event对象有toElement属性,但没有relatedTarget属性
FF:event对象没有有toElement属性,但有relatedTarget属性
解决办法:var target = e.relatedTarget || e.toElement;
5. 标签的x和y的坐标位置,style.posLeft 和 style.posTop
IE:有
FF:没有
解决办法:用通用属性obj.offsetLeft 和 obj.offsetTop
6. 窗体的高度和宽度
IE:document.body.offsetWidth 和 document.body.offsetHeight。注意,此时页面一定要有body标签。
FF:window.innerWidth 和 window.innerHeight,以及 document.documentElement.clientWidth 和 document.documentElement.clientHeight。
解决办法:通用属性 document.body.clientWidth 和 document.body.clientHeight;
7. 添加事件
IE:element.attachEvent('onclick',function)
FF:element.addEventListener('click',function,true)
解决办法:element.onclick = function.虽然都可以使用click事件。但onclick和上面两种方法效果是不一样的。onclick只有执行一个过程,而attachEvent 和 addEventListener执行的是一个过程列表,也就是多个过程。
如:element.attachEvent('onclick',func1); element.attachEvent("onclick", func2)这样func1和func2都会被执行。
8. 标签的自定义属性
IE:如果给标签div1定义了一个属性value,可以div1.value 和 div1["value"]取得该值
FF:不能用div1.value 和div1["value"]
解决办法:div1.getAttribute('value')
9. document.form.item
IE:现有问题,document.formName.item("itemName") 这样的语句,不能在 FF 下运行
FF:不支持
解决办法: document.formName.elements["elementName"]
10. 集合/数组类对象问题
IE:有许多集合类对象取用时用()
FF:不能这样取用
解决办法:改用[]作为下标运算。
如:document.forms("formName") 改为 document.forms["formName"]。document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]
11. HTML对象的id作为对象名的问题
IE:HTML对象的id可以作为document的下属变量名直接使用
FF:需要用getElementById()方法
解决办法:用getElementById('idName')代替idName作为对象变量使用
12. 用idName字符串取得对象的问题
IE:利用eval(idName)可以取得 id 为 idName 的HTML对象。
FF:不支持
解决办法:getElementById(idName) 代替 eval(idName)
13. 变量名与某 HTML 对象 id 相同的问题
IE:因为HTML对象id 在IE中直接调用,所以变量名不能和id相同
FF:可以使用变量名和id相同
解决办法,声明变量时一律加上 var ,以避免歧义(最好id和变量名不要相同)。
14. document.getElementsByName() 和 document.all[name]
IE:getElementsByName()、document.all[name] 均不能用来取得 div 元素
FF:可以兼容document.all, 但会生成一条警告。
解决办法:可以用getElementById() 或者 getElementByTagName()来代替
15. input.type属性问题
IE:input.type属性为只读
FF:input.type属性为读写
16. window.location.href
IE:(FF2.0以下),可以使用window.location 或 window.location.href ; FF 1.5下只能使用window.location
解决办法:使用window.location 来代替 window.location.href
17. 模态和非模态窗口问题
IE:可以通过 showModalDialog 和 showModelessDialog 打开模态和非模态窗口
FF:不支持
解决办法:直接使用window.open(pageURL, name, parameters) 方式打开新窗口,如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。
如:var parWin = window.opener; parWin.document.getElementById('title').value = 'My Title';
18. body
IE:body必须在body标签被浏览器完全读入后才存在
FF:body在body标签没有被浏览器完全读入之前就存在
19. 事件委托方法
IE:document.body.onload = init;
FF:document.body.onload = init();
解决办法:统一使用 document.body.onload = new Function('init()'); 或者 docuement.body.onload = function(){/* 这里是代码 */}
20. 父元素的区别
IE:obj.parentElement;
FF :obj.parentNode
解决办法:因为FF与IE都支持DOM,所以可以都使用obj.parentNode
22.innerText在IE中能正常工作,但是innerText在FF中却不行. 需用textContent
23. FF中设置HTML标签的style时,所有位置性和字体尺寸的值必须后跟px。这个IE也是支持的
24. 父节点、子节点和删除节点
IE:parentElement、parement.children,element.romoveNode(true)。
FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。
相关内容
- 解决IE与火狐浏览器padding-top差2px问题FF(火狐浏览器)下解决按钮的水平居中FireFox火狐浏览器与IE兼容问题 - 透明滤镜 DIV滚动条 css firefox火狐浏览器下的兼容性问题
- css中padding和margin的异同点介绍css行内元素padding,margin,width,height没有变化CSS边距属性定义是用margin还是用padding的两者对比PHPWind7.0风格css样式详解Z-BLOG模板CSS默认样式注释大全简化的CSS Reset:15套CSS重设实例Css Reset(复位)的简单介绍-CSS教程-网页制作-网页教学网CSS中margin和padding的区别浅析
- css实现文字层浮在图片之上示例代码CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 有关首行首字下沉的实现原理及代码CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 部分透明的蒙版效果实现思路(兼容ie6)纯CSS实现背景半透明文字不透明效果兼容IE6滤镜使用之图片透明的css写法背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)使用滤镜解决IE6下png图片不能透明(被渲染成默认色)的问题格式png24透明底 多种解决png24格式图片在ie6中透明问题背景半透明效果CSS链接样式代码img 半透明 处理img加半透明背景实现思路及代码IE6下Png透明最佳解决方案DD_belatedPNG
- CSS 鼠标样式和手指样式整理CSS样式文件格式化整理工具 v1.0 绿色中文版CSS定义鼠标经过时鼠标图形的十五种样式整理关于CSS样式表文件组织形式的整理 样式表(CSS) 在线格式化整理与css压缩工具CSS新手整理的CSS技巧超全面CSS样式整理
- 如何让图片相对于上层DIV始终保持水平、垂直都居中设置div背景透明的方法示例CSS实现div不设高度完全居中div自适应高度自动填充剩余高度详解DIV+CSS的命名规矩才能有利于SEO优化的实现方法DIV或者DIV里面的图片水平与垂直居中的方法详解如何用div实现自制滚动条div对齐与网页布局详解DIV+CSS实现电台列表设计的示例代码div+css实现带箭头的面包屑导航栏不定宽高的文字在div中垂直居中实现方法
- 圆形头像图标运用border属性轻松实现CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- 纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 常见浏览器兼容性问题与解决方案css篇浅谈原生页面兼容IE9问题的解决方案新版chrome浏览器设置允许跨域的实现css hack之\9和\0就可能对hack IE11\IE9\IE8无效css区分ie8/ie9/ie10/ie11 chrome firefox的代码解决CSS浏览器兼容性问题的4种方案常见的浏览器兼容性问题(小结)border-radius IE8兼容处理的方法浅谈遇到的几个浏览器兼容性问题base64图片在各种浏览器的兼容性处理 对常见的css属性进行浏览器兼容性总结(推荐)