Html Document窗口的尺寸和位置


在web前端編程中,我們有的時候需要獲取瀏覽器有關窗口的大小和位置,尤其是瀏覽器窗口可視區域的大小和位置,更是我們經常要用到的。

 

一般的,在獲取瀏覽器窗口的大小和位置時,有以下幾個屬性可以使用:

1)       window.innerHeight

2)       window.innerWidth

3)       window.pageXOffset

4)       window.pageYOffset

5)       document.documentElement.clientHeight

6)       document.documentElement.clientWidth

7)       document.documentElement.scrollLeft

8)       document.documentElement.scrollTop

9)       document.body.clientHeight

10)   document.body.clientWidth

11)   document.body.scrollLeft

12)   document.body.scrollTop

 

在不同的瀏覽器中,以上12個屬性所代表的意義也是不一樣的。特別需要注意的是,當使用或者不使用<!DOCTYPE>聲明顯示一個文檔的時候,以上12個屬性的意義也會發生變化。

為徹底搞清楚它們的含義,筆者在IE6/IE7/IE8/IE9/FireFox/Chrome/Safari下進行了測試,總結如下表所示:

 

                                                              瀏覽器

 

屬性

Firefox/Chrome/Safari

(帶<!DOCTYPE>聲明)

Firefox/Chrome/Safari

(不帶<!DOCTYPE>聲明)

IE 6/7/8/9

 (帶<!DOCTYPE>聲明)

IE 6/7/8/9

(不帶<!DOCTYPE>聲明)

window.innerWidth/innerHeight

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

IE 6/7/8

Undefined

 

IE 9

同Firefox

IE 6/7/8

Undefined

 

IE 9

同Firefox

document.documentElement.clientWidth/clientHeight

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

<html>元素的寬度和高度(注意包括了不可見的區域)

IE 6/7/8/9

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

IE 6/7/8

總為0

 

IE 9

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

document.body.clientWidth/clientHeight

<body>元素的寬度和高度(注意,包括了不可見的區域)

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域

<body>元素的寬度和高度(注意,它包括了不可見的區域)

IE 6/7/8

窗口顯示區(可視區域)的寬度和高度,包括滾動條區域)

 

IE 9

<body>元素的寬度和高度(注意,它包括了不可見的區域)

window.pageXOffset/pageYOffset

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

IE 6/7/8

Undefined

 

IE 9

同Firefox

IE 6/7/8

Undefined

 

IE 9

同Firefox

document.documentElement.scrollTop/scrollLeft

Firefox:

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離,同window.pageXOffset/pageYOffset

 

Chrome/Safari:

總為0

總為0

IE 6/7/8/9

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

IE 6/7/8

總為0

 

IE 9

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

document.body.scrollTop/scrollLeft

FireFox:

總為0

 

Chrome/Safari:

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離,同window.pageXOffset/pageYOffset

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離,同window.pageXOffset/pageYOffset

 

總為0

IE 6/7/8

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

 

IE 9

當前頁面相對於窗口顯示區左上角的 X /Y位置,即水平/垂直滾動條已滾動的距離

 

特別指出的是,在IE 9中,無論是否使用<!DOCTYPE>聲明顯示一個文檔,document.documentElement和document.body中的相關屬性的意義總是相同的。這點與IE 6/7/8表現不一樣。

 

綜合上表,以下是獲取瀏覽器窗口可視區域(不包括滾動條)和滾動條位置的代碼,它兼容主流瀏覽器(IE/Firefox/Chrome/Safari):

 

// 獲取瀏覽器窗口的可視區域的寬度
function getViewPortWidth() {
    return document.documentElement.clientWidth || document.body.clientWidth;
}

// 獲取瀏覽器窗口的可視區域的高度
function getViewPortHeight() {
    return document.documentElement.clientHeight || document.body.clientHeight;
}

// 獲取瀏覽器窗口水平滾動條的位置
function getScrollLeft() {
    return document.documentElement.scrollLeft || document.body.scrollLeft;
}

// 獲取瀏覽器窗口垂直滾動條的位置
function getScrollTop() {
    return document.documentElement.scrollTop || document.body.scrollTop;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM