zoukankan      html  css  js  c++  java
  • JavaScript在IE浏览器和Firefox浏览器中的差异总结

    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的问题。

  • 相关阅读:
    json_decode 转数组
    json_encode转义中文问题
    ECshop后台新功能权限添加
    mysql中int、bigint、smallint 和 tinyint的区别与长度的含义
    mysql数据库表设计小数类型
    mysql group_concat用法
    PHP socket通信之UDP
    本地tp项目上传服务器报runtime/cache错误
    mysql 命令一套
    linux 9 -- 交互式使用Bash Shell
  • 原文地址:https://www.cnblogs.com/kingleo/p/4313624.html
Copyright © 2011-2022 走看看