有一个很大的应用程序,有很多页面。
当我在控制台中对应用程序的任何页面执行console.log($(window).height())
时,结果都是预期的:窗口的高度,而不是文档的高度。例如:
$(window).height() //351
$(document).height() //1037
但有一页,在第一次加载时,Chrome45和FF38中的结果是错误的:它给出了文档的高度减去1px。例如:
$(window).height() //2753
$(document).height() //2754
如果我重新加载页面,结果是正确的,就像在任何其他页面上一样。这里有很多javascript:jquery、jqueryui.1.8.23、primefaces、jquery插件。等
但我找不到,是什么导致了这种奇怪的行为。IE11上一切正常。window.height
计算错误的原因是什么?你能给出一些想法吗?去哪里看?
如果有人需要解决方案:
问题是由文档的doctype引起的。所有的页面都有<!DOCTYPE html>
,但这一页有类似<!DOCTYPE composition PUBLIC ..bla...XHTML 1.0 Transitional..bla...>
的内容。在重新加载时,doctype与其他页面相同。也许与这个jQuery错误有关:https://github.com/morr/jquery.appear/pull/16
正确的doctype解决了此问题。