我正在实现无限滚动,这意味着我将大块内容附加到 DOM 中(通过 jquery 和 javascript)。
为了让用户感觉流畅,我们需要进行一些手动滚动以保持内容窗口“在同一个位置”,尤其是当我们在用户看到的内容前面添加文本时。为了实现这一点(添加一个块,然后将内容向下滚动到我们添加的确切数量),我们需要能够确定我们刚刚添加的内容的高度。这就是 Firefox 和 IE 不同的地方。Firefox 正确处理了这个问题,并滚动到我的内容中的正确位置,但是当真实值约为 2400 像素时,IE 报告的高度约为 600 像素。
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 倍),无论我如何进行测量,它都是一致的(我可以改为测量 DOM 中的“newContent”的高度,而 IE 仍然报告它错误,但始终如一)。甚至 .scrollIntoView() 之类的其他“内置”javascript 函数在 IE 中似乎也恰好偏离了这个数量。
作为健全性检查,我可以在我的桌面上创建一个独立的 html 文件,其中包含我的内容示例,并且在这种情况下它可以工作。所以问题似乎只是在页面加载后添加的内容。