document scrollingElement scrollTop 的問題

最近在檢測網(wǎng)頁異常情況俄精,添加了監(jiān)測的系統(tǒng)逗堵,跑了一段時間贸典,發(fā)現(xiàn)報錯最多的就是Cannot read 'scrollTop' of undefined設(shè)備大多數(shù)基本上都是Android手機

檢查了一下代碼發(fā)現(xiàn),有用到scrollTop的時候只有在滾動加載的時,獲取頁面滾動的高度月趟,代碼如下

document.scrollingElement.scrollTop

只有這個地方用到了scrollTop,難道是scrollingElement的問題恢口,于是查找了一些資料孝宗,如下

引用MDN文檔解釋Document.scrollingElement的作用

scrollingElement(Document的只讀屬性)返回滾動文檔的Element對象的引用。在標(biāo)準(zhǔn)模式下弧蝇,這是文檔的根元素碳褒,document.documentElement
當(dāng)在怪異模式下,scrollingElement屬性返回HTML body元素(若不存在返回null)

也就是說scrollingElement在標(biāo)準(zhǔn)模式下可以被當(dāng)做文檔的根元素看疗,不過現(xiàn)在大部分網(wǎng)頁都是標(biāo)準(zhǔn)模式下沙峻。那接下來就看看兼容性問題。

scrollingElement 兼容性

PC端兼容性

PC

手機端兼容性

手機端

看這兩張圖就能看出來两芳,兼容性并不是很好摔寨,Android并不支持此對象,所以在Android手機上會報錯怖辆。
那除了這元素是复,還有什么辦法獲取頁面內(nèi)容的滾動高度呢?

看過這個jsfiddle發(fā)現(xiàn)還可以使用document.bodydocument.documentElement的方式竖螃,我分別將這個jsfiddle在Chrome瀏覽器下運行淑廊,和在Safari下運行得到的結(jié)果卻不同,結(jié)果如下:

Chrome執(zhí)行結(jié)果

document.documentElement.scrollTop: 77 
document.body.scrollTop: 0 
document.scrollingElement.scrollTop: 77

Safari執(zhí)行結(jié)果

document.documentElement.scrollTop: 0
document.body.scrollTop: 77
document.scrollingElement.scrollTop: 77

對比結(jié)果就發(fā)現(xiàn)特咆,在Chrome中document.body.scrollTop獲取到的值為0季惩,而在Safari中是有值的,但document.documentElement.scrollTop卻沒有值得到0

兼容性解答方法獲取scrollTop

const scrollTop = Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop)

看了好多資料都說document.documentElement.scrollTop已經(jīng)棄用腻格,但是Safari還是可以用的画拾,難道兼容了。更安全的寫法就是上面都兼容下

或者把scrollingElement也加上

function pageScrollTop {
  if (document.scrollingElement) {
    return document.scrollingElement.scrollTop
  }

  return Math.max(window.pageYOffset, document.documentElement.scrollTop, document.body.scrollTop)
}

參考鏈接:

https://stackoverflow.com/questions/28633221/document-body-scrolltop-firefox-returns-0-only-js

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菜职,一起剝皮案震驚了整個濱河市青抛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酬核,老刑警劉巖蜜另,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件适室,死亡現(xiàn)場離奇詭異,居然都是意外死亡蚕钦,警方通過查閱死者的電腦和手機亭病,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門鹅很,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘶居,“玉大人,你說我怎么就攤上這事促煮∮势ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵菠齿,是天一觀的道長佑吝。 經(jīng)常有香客問我,道長绳匀,這世上最難降的妖魔是什么芋忿? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮疾棵,結(jié)果婚禮上戈钢,老公的妹妹穿的比我還像新娘。我一直安慰自己是尔,他們只是感情好殉了,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拟枚,像睡著了一般薪铜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恩溅,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天隔箍,我揣著相機與錄音,去河邊找鬼脚乡。 笑死蜒滩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每窖。 我是一名探鬼主播帮掉,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窒典!你這毒婦竟也來了蟆炊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤瀑志,失蹤者是張志新(化名)和其女友劉穎涩搓,沒想到半個月后污秆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡昧甘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年良拼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片充边。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡庸推,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浇冰,到底是詐尸還是另有隱情贬媒,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布肘习,位于F島的核電站际乘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漂佩。R本人自食惡果不足惜脖含,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望投蝉。 院中可真熱鬧养葵,春花似錦、人聲如沸墓拜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咳榜。三九已至夏醉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涌韩,已是汗流浹背畔柔。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臣樱,地道東北人靶擦。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像雇毫,于是被迫代替她去往敵國和親玄捕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345