瀏覽器 視窗 scrollTop 的相容性問題

2022-08-02 00:48:13 字數 1670 閱讀 5858

window.pageyoffset 被所有瀏覽器支援除了 ie 6, ie 7, ie 8, 不關doctype的事, 注ie9 開始支援此屬性。

window.scrolly 被firefox, google chrome , safari支援 不關doctype的事, 注ie9 不支援此屬性

在(quirk 模式)的時候 document.body.scrolltop 在 internet explorer, firefox, opera, google chrome safari 返回正確的值。

在(quirk 模式)的時候 document.documentelement.scrolltop 永遠是零

非quirk模式的時候 document.documentelement.scrolltop internet explorer, firefox and opera 返回正確的值 但是在 google chrome ,safari 中永遠是零

特整理乙個**如下

非quirk模式

ie6 7 8

ie9firefox

opera

chrome

safari

scrolly

undefined

undefined

正確正確

正確正確

pageyoffset

undefined

正確正確

正確正確

正確body.scrolltop00

00正確正確

documentelement.scrolltop

正確正確

正確正確00

quirk 模式

ie6 7 8

ie9firefox

opera

chrome

safari

scrolly

undefined

undefined

正確正確

正確正確

pageyoffset

undefined

正確正確

正確正確

正確body.scrolltop

正確正確

正確正確

正確正確

documentelement.scrolltop0正確

0000

以上在win7環境下測試

可以看出是非常凌亂的

只在quirk模式下, body.scrolltop是被所有都支援的

所以這個表大家也不用 也沒有必要去記, 只要記住一條

if(window.pageyoffset)else if(document.documentelement.scrolltop )else if(document.body.scrolltop){//ie678 的quirk模式

原則是看pageyoffset 然後看documentelement.scrolltop, 最後是document.body.scrolltop

當然 也可以直接scrolltop 而不使用pageyoffset

以下是mdn 提供的相容性**

scrolltop = (((t = document.documentelement) || (t = document.body.parentnode)) && typeof t.scrolltop == 『number』 ? t : document.body).scrolltop

各瀏覽器下 scrollTop的差異

1 各瀏覽器下 scrolltop的差異 ie6 7 8 對於沒有doctype宣告的頁面裡可以使用document.body.scrolltop來獲取 scrolltop高度 對於有doctype宣告的頁面則可以使用document.documentelement.scrolltop safari...

各瀏覽器下 scrollTop的差異

1 各瀏覽器下 scrolltop的差異 ie6 7 8 對於沒有doctype宣告的頁面裡可以使用 document.body.scrolltop 來獲取 scrolltop高度 對於有doctype宣告的頁面則可以使用 document.documentelement.scrolltop saf...

獲取scrollTop相容各瀏覽器的方法,以及繫結

window unbind scroll bind scroll function var scrolltop document.documentelement.scrolltop window.pageyoffset document.body.scrolltop if height scroll...