DOM

  • FF、Opera 和 IE 浏览器认为在客户端浏览器展示的页面的内容对应于整个 HTML,所以使用 document.documentElement
    来代表,相应的滚动距离则通过 document.documentElement.scrollLeft
    和 document.documentElement.scrollTop来获取。
  • 而 Safari 和 Chrome 浏览器则认为页面开始于 body 部分,从而相应的滚动距离用 document.body.scrollLeft 和 document.body.scrollTop
    来获取。另外需要注意的是,FF 和 IE 的 quirks mode(兼容模式)下是用 document.body来获取的。
    documentElement 对应的是 html 标签,而 body 对应的是 body 标签。
var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  • offsetTop, offsetLeft 都是相对于最近一个有定位的父元素,如果都没有那么就是相对于 body 的偏移位置。
  • offsetParent是寻找最近一个有定位的父级元素,如果没有,那么找到 body 元素。
  • 如果有定位的父级元素不是 body,是 A 元素,那么再寻找 A 元素的最近的有定位的父级元素,如果没有,就是相对于 body 的定位,这时,所求偏移量就是 A 的偏移量加所求元素相对于 A 的偏移量。如果 A 还有已经定位的父级元素,就继续去推,直到找到 body 为止。

E8+ 支持 addEventListener()。IE8 以下的版本使用 attachEvent()

  • attachEvent()
    不支持事件捕获。
  • attachEvent()
    第一个参数事件处理程序属性名使用前缀 on。
  • attachEvent()
    允许相同的事件处理程序函数注册多次。

你可能感兴趣的:(DOM)