標籤:block public 誤區 功能 錯誤 像素 網上 作用 判斷
今天無聊,幫一個網友解決一個很無聊的問題,用JS判斷頁面是否出現捲軸,在網上看了一些代碼,經過驗證並不起作用,下面是在網上搜尋到的代碼:
當可視地區小於頁面的實際高度時,判定為出現捲軸,即:
if (document.documentElement.clientHeight < document.documentElement.offsetHeight) scroll = true;
要使用 document.documentElement ,必須在頁面頭部加入聲明:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
其實,這段代碼是不起作用的,因為他沒考慮到一個問題,就是瀏覽器的邊框,當我們在擷取頁面的offsetHeight高度時是包括了瀏覽器的邊框的,瀏覽器的邊框是2個像素,所以這時無論在任何情況下clientHeight 始終是小於offsetHeight的,這就使得即使沒有捲軸它也為true,因此我們要修正這個錯誤,代碼應該這樣改,在offsetHeight上減去4個像素,即:
if (document.documentElement.clientHeight < document.documentElement.offsetHeight-4){
//執行相關指令碼。
}
還有,這裡要搞清楚,上面這代碼是判斷橫向捲軸的,我們一般要判斷的是縱向滾動,代碼如下:
if (document.documentElement.clientWidth < document.documentElement.offsetWidth-4){
//執行相關指令碼。
}
呵呵,問題搞定,其實我覺得這是個非常無聊的問題,我想沒幾個人想著去判斷捲軸的有無,沒有什麼實際意義,在這裡協助一下那些需要這功能的朋友走出誤區,免得浪費大量時間去網上搜而無果。
JS判斷頁面是否出現捲軸