2015-03-18 99 views
2

以下是關鍵問題:當滾動條存在時,如何獲得元素的準確偏移頂部(在本例中爲文本框)?最好全部用javascript。獲取包含滾動條的文檔內容的高度javascript

我有一個頁面會溢出瀏覽器窗口的高度,這意味着會有滾動條。我在整個頁面中都鏈接了與onblur事件相關的文本框。 Onblur會驗證textobx的價值。如果數據無效。如果不是,那麼它會/應該將錯誤消息右移到文本框的頂部。 element.offsettop似乎沒有考慮到頁面上可能存在的任何滾動條。

謝謝!如果你不明白我在問什麼,請告訴我。

編輯:

有人可以幫助我找到文檔內容的高度。不是窗口高度,而是文檔內容的高度,所以它也會包含滾動條的高度?謝謝!

+0

當你說「all in javascript」,你的意思是純粹的JavaScript還是JavaScript框架,如jQuery允許? – 2015-03-19 00:28:17

+0

我想純javascript的答案 – www139 2015-03-19 00:33:57

+0

_「有人可以幫我找到文檔內容的高度」_ - http://stackoverflow.com/search?q=javascript+document+height – CBroe 2015-03-19 01:43:28

回答

6

文檔大小是瀏覽器兼容性的噩夢,因爲儘管所有瀏覽器都公開了clientHeight和scrollHeight屬性,但它們並不都同意如何計算這些值。

對於如何測試正確的高度/寬度,過去有一個複雜的最佳實踐公式。這涉及使用document.documentElement屬性(如果可用)或回退到文檔屬性等。

獲得正確高度的最簡單方法是獲取在文檔或documentElement上找到的所有高度值,並使用最高值。這基本上是jQuery所做的:

var body = document.body, 
    html = document.documentElement; 

var height = Math.max(body.scrollHeight, body.offsetHeight, 
         html.clientHeight, html.scrollHeight, html.offsetHeight); 
+0

okey。謝謝。我想我已經看到了其他代碼,但現在我知道它做了什麼。還有一個問題:element.offsetTop是否考慮到可能存在的滾動條?謝謝。你一直很有幫助。我會繼續挖掘一下,看看我能不能找出更多...... – www139 2015-03-19 23:08:50