2012-09-25 37 views
1

我实施无限滚动,这意味着我追加的内容到DOM块之后加入(通过jQuery和JavaScript)。IE报告不正确.height()上的内容页面加载

为了使这个手感滑爽对于用户来说,我们需要做一些手工滚动,以保持“在同一个地方”的内容的窗口,特别是当我们在前面加上什么用户正在观看的前文本。为了完成这个任务(预先设置一个块,然后将内容向下滚动到我们预先确定的数量),我们需要能够确定我们刚刚添加的内容的高度。这是Firefox和IE不同的地方。 Firefox正确处理这个问题,并滚动到我内容中的正确位置,但IE的真实值约为2400px时,报告的高度为600px。

var h1 = $(document).height(); //take the height before appending 
$('#textChunks').prepend(newContent); // prepend stuff on top 
var h2 = $(document).height();//take the height again... 
alert(h2-h1); 

的警告值是在IE浏览器一直错(关闭的3倍),这是一贯的,无论我如何进行测量(我可以代替测量“newContent”的高度,它在后DOM和IE仍然报错,但始终如此)。甚至其他'内置'JavaScript函数(如.scrollIntoView())在IE中似乎也只有这个量。

作为一个全面的检查,我可以创造我的桌面我的内容的样品上一个独立的HTML文件,在这种情况下它的工作原理。所以这个问题似乎只是在页面加载后添加内容。

+0

为什么它的价值,听起来像你有一个css问题,盒模块更短。另一个问题可能是缺少结束标记,或者没有代码,所以有50个地方可以猜测。我会被打伤,为什么有这样的价值差异,可能是因为你的CSS没有正确说明borwsers中的盒子模块不会自动纠正你。只是一个想法。 –

+1

问题:您的页面处于严格模式还是怪癖模式?你使用的是什么'doctype',并且是你的HTML顶部的第一件事? IE浏览器往往做怪异的事情,在怪异模式,最好被遗忘...... –

+0

谢谢先生!这确实是正确的方向!更多详情如下 –

回答

1

答案是怪癖模式!

有很大的参考:http://webdesign.about.com/cs/doctype/a/aaquirksmode.htm

为快速测试,我改变了我的本地设置(F12在IE浏览器,然后更改“文件模式”从怪癖IE9标准),其中固定我的滚动发行!

没有DOCTYPE声明,IE被默认为怪癖模式,这显然使得它添加到页面加载后的DOM,这自然使得滚动不可靠的元素报告不正确的高度。另请注意,我在框架内的框架内工作,因此为我的内容指定DOCTYPE的最佳位置是在OUTERMOST FRAME中。

+1

你会想在顶层和iframe中指定'doctype',你会希望它们是相同的。在某些浏览器中,iframe从其他浏览器中的最外框继承本地类型类型规则。 –

0

使用HTMLElement.offsetHeight得到任何HTML元素的“真实”的高度。

+0

谢谢,但我尝试了几种方法来访问这个值,它们都是一致的和一致的错误(仅在IE中),而在Firefox中它们是正确的。当我将这些div添加到DOM中时,IE会将我的div的大小报告为其真实值的一小部分。 –