- FF、Opera 和 IE 瀏覽器認(rèn)為在客戶端瀏覽器展示的頁面的內(nèi)容對(duì)應(yīng)于整個(gè) HTML,所以使用 document.documentElement
來代表,相應(yīng)的滾動(dòng)距離則通過 document.documentElement.scrollLeft
和 document.documentElement.scrollTop來獲取。 - 而 Safari 和 Chrome 瀏覽器則認(rèn)為頁面開始于 body 部分,從而相應(yīng)的滾動(dòng)距離用 document.body.scrollLeft 和 document.body.scrollTop
來獲取。另外需要注意的是,F(xiàn)F 和 IE 的 quirks mode(兼容模式)下是用 document.body來獲取的。
documentElement 對(duì)應(yīng)的是 html 標(biāo)簽,而 body 對(duì)應(yīng)的是 body 標(biāo)簽。
var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
- offsetTop, offsetLeft 都是相對(duì)于最近一個(gè)有定位的父元素,如果都沒有那么就是相對(duì)于 body 的偏移位置。
- offsetParent是尋找最近一個(gè)有定位的父級(jí)元素,如果沒有,那么找到 body 元素。
- 如果有定位的父級(jí)元素不是 body,是 A 元素,那么再尋找 A 元素的最近的有定位的父級(jí)元素,如果沒有,就是相對(duì)于 body 的定位,這時(shí),所求偏移量就是 A 的偏移量加所求元素相對(duì)于 A 的偏移量。如果 A 還有已經(jīng)定位的父級(jí)元素,就繼續(xù)去推,直到找到 body 為止。
E8+ 支持 addEventListener()。IE8 以下的版本使用 attachEvent()
。
- attachEvent()
不支持事件捕獲。 - attachEvent()
第一個(gè)參數(shù)事件處理程序?qū)傩悦褂们熬Y on。 - attachEvent()
允許相同的事件處理程序函數(shù)注冊(cè)多次。