为什么Firefox返回0作为$(window).height()的值

kil*_*ate 11 firefox jquery jquery-1.8

在我看来,Firefox应该更好地在使用时返回正确的值$(window).height().

我正在使用jQuery 1.8.2.这是特定版本中的错误吗?我测试的每个其他浏览器在计算视口高度时都会返回一个合适的值.

为了解决这个问题,我使用下面的剪辑将像素值应用于div.

$(window).bind('cwsObjectsShown', function() {
  var height = $(window).height();
  if (height === 0) {
     height = window.innerHeight;
  }
  height = height - '120';
  $('#game_objects').css('height', height + 'px');
});
Run Code Online (Sandbox Code Playgroud)

小智 45

jQuery的$(窗口).height()对doctype敏感.试试<!doctype html>?

jQuery 1.8.1发行说明说

不要使用Quirks模式!jQuery从未支持Quirks模式,我们也没有在Quirks中执行任何测试.这可能会影响$("window").height()等值,并且jQuery 1.8 Quirks模式结果确实发生了变化,以支持一些现代浏览器功能.我们看到的大多数问题案例都来自希望处于标准模式但在标记之前具有无效文档类型或无关标记的开发人员.如有疑问,请使用简单和简短的<!doctype html>.

例如,使用jQuery 1.8.2和Firefox 16,我得到一个有效的$(窗口).height(),其中包含doctype html,但是高度为0,其中包含doctype html5.在Chromium 20中,两者都有效.(W3C HTML5规范确实说使用doctype html,而不是html5.)