2015-03-18 98 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