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 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
利用404错误页面实现UrlRewrite的实现代码
Aug 20 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
May 28 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 Javascript
一文读懂ES7中的javascript修饰器
May 06 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
Jun 26 Javascript
vue项目实现图片上传功能
Dec 23 Javascript
JS数组转字符串实现方法解析
Sep 04 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
php实现mysql同步的实现方法
2009/10/21 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
简单谈谈Python流程控制语句
2016/12/04 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
给国外客户的邀请函
2014/01/30 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
干部年终考核评语
2015/01/04 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
Python Matplotlib库实现画局部图
2021/11/17 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL