zoukankan      html  css  js  c++  java
  • (转)Javascript在IE与Firefox下的差异

     来源:http://www.cnblogs.com/wzyexf/archive/2010/10/20/1857110.html?login=1#commentform

    Javascript在IE与Firefox下的差异写法总结 -

    indow.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)。

    lientX,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编辑器Aptana Studio
    OOJ面向对象编程的三大特点封装,继承,多态分析与实例
    ASP.NET设计模式之单体模式Singleton
    OOJ面向对象的JAVASCRIPT(一)
    【转】性能优化关于Asp.net性能的技巧
    性能优化关于JQuery的性能优化
    学习javascript的动态this指针与动态绑定 call与apply函数的应用
    OOJ面向对象的JAVASCRIPT(二)
  • 原文地址:https://www.cnblogs.com/mimengjiangnan/p/1857693.html
Copyright © 2011-2022 走看看