Javascript下IE与Firefox下的差异兼容写法总结


Posted in Javascript onJune 18, 2010

window.event对象差异
IE:有window.event对象
FF:没有window.event对象。可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)

获取鼠标当前坐标
IE:event.x和event.y。
FF:event.pageX和event.pageY。
通用:两者都有event.clientX和event.clientY属性。

鼠标当前坐标(加上滚动条滚过的距离)
IE:event.offsetX和event.offsetY。
FF:event.layerX和event.layerY。

标签的x和y的坐标位置:style.posLeft 和 style.posTop
IE:有。
FF:没有。
通用:object.offsetLeft 和 object.offsetTop。

获取窗体的高度和宽度
IE:document.body.offsetWidth和document.body.offsetHeight。注意:此时页面一定要有body标签。
FF:window.innerWidth和window.innerHegiht,以及document.documentElement.clientWidth和document.documentElement.clientHeight。
通用:document.body.clientWidth和document.body.clientHeight。

添加事件
IE:element.attachEvent(”onclick”, func);。
FF:element.addEventListener(”click”, func, true)。
通用:element.onclick=func。虽然都可以使用onclick事件,但是onclick和上面两种方法的效果是不一样的,onclick只有执行一个过程,而attachEvent和addEventListener执行的是一个过程列表,也就是多个过程。例如:element.attachEvent(”onclick”, func1);element.attachEvent(”onclick”, func2)这样func1和func2都会被执行。

在这里断桥残雪,曾经写过一个通用的添加删除绑定事件的函数,大家可以查看以下文章:《JavaScript跨浏览器的添加删除事件绑定函数》

标签的自定义属性
IE:如果给标签div1定义了一个属性value,可以div1.value和div1["value"]取得该值。
FF:不能用div1.value和div1["value"]取。
通用:div1.getAttribute(”value”)。

父节点、子节点和删除节点
IE:parentElement、parement.children,element.romoveNode(true)。
FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。

clientX,pageX,offsetX,x,layerX,screenX,offsetLeft
screenX:鼠标在显示屏幕上的坐标。
clientX:鼠标在页面显示区域的坐标。
注:以上两个都是各浏览器通用的。以下为特有方法:

pageX:FF特有,鼠标在页面上的位置,从页面左上角开始定位,这个可以很方便在整个页面上进行定位,IE没有直接替换的属性。
layerX:FF特有,鼠标相对于“触发事件的元素的层级关系中离该元素最近的,设置了position的父元素”的边界的位置,从border的左上角开始定位,即如果这个父元素存在border,则坐标原点在border的左上角,而不是内容区域的左上角。
offsetX:IE特有,鼠标相对于“触发事件的元素”的位置,从内容区域左上角开始定位,不是从border左上角开始!这个属性比较好用,用来判断鼠标点在一个元素中的哪个位置很方便,FF没有直接替换的属性。
x:IE特有,跟layerX一个效果,可作为layerX的直接替换属性。
注:IE和FF的定位有个1px的差别,实际上,IE的定位从0开始,FF的定位从1开始,FF永远会比IE大1px,需要根据实际情况处理。

offsetLeft:这个属性不是事件对象的属性,而是DOM对象所有的,该属性表示的是DOM对象在“该DOM对象的层级关系中离该对象最近的,设置了position的父对象”中的位置,虽然话是这么说的,但是不同的浏览器效果不一样。

FF中严格按上述说明执行,但是在IE6/7中,这个属性返回该DOM对象在其直接父对象中的位置,但是IE8改正了这个问题,不过IE8又有了一个新问题,其他的浏览器都是从父对象的内容区域的左上角开始定位,IE8确是从父元素的border的左上角开始定位,由于测试环境为IETester中的IE8,不能排除是IETester的问题。

Javascript 相关文章推荐
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
原生JS实现左右箭头选择日期实例代码
Mar 14 Javascript
JavaScript实现简单的树形菜单效果
Jun 23 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
ZK中使用JS读取客户端txt文件内容问题
Nov 07 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
JavaScript内置对象之Array的使用小结
May 12 Javascript
基于js实现数组相邻元素上移下移
May 19 Javascript
CocosCreator入门教程之网络通信
Apr 16 Javascript
js打印纸函数代码(递归)
Jun 18 #Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 #Javascript
jquery 多行滚动代码(附详细解释)
Jun 17 #Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 #Javascript
jQuery+jqmodal弹出窗口实现代码分明
Jun 14 #Javascript
ExtJS 设置级联菜单的默认值
Jun 13 #Javascript
js 未结束的字符串常量错误解决方法
Jun 13 #Javascript
You might like
php中几种常见安全设置详解
2010/04/06 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
js鼠标左右键 键盘值小结
2010/06/11 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python切片知识解析
2016/03/06 Python
Python实现选择排序
2017/06/04 Python
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
浅谈Python 函数式编程
2020/06/20 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
台湾旅游网站:灿星旅游
2018/10/11 全球购物
2014植树节活动总结
2014/03/11 职场文书
绿色出行口号
2014/06/18 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js