11

在我看来,Firefox 应该更好地配备在使用$(window).height().

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

为了解决这个问题,我使用下面的 snip 将像素值应用到 div。

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

7 回答 7

47

jQuery 的 $(window).height() 对 doctype 很敏感。试试 <!doctype html> ?

jQuery 1.8.1 发行说明说

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

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

于 2012-11-06T20:46:31.837 回答
4

试试这个功能:

function GetBrowserDim() {
    if (window.innerHeight) {
        return { w: window.innerWidth, h: window.innerHeight};
    } else {
        return { w: document.body.clientWidth, h: document.body.clientHeight };
    }
}
于 2016-09-03T11:22:26.507 回答
3

在兼容模式下,$(window).height() 和 $(window).width() 在 IE 中返回 0。在FireFox中不检查这个,可能是一样的。尝试改用 $(document).height() 或 $(document).width() 。

于 2016-04-14T09:52:49.427 回答
2

就我而言,我不得不删除 html 元素中的属性

<html lang="en-US" prefix="og: http://ogp.me/ns#">

改为刚刚

<html>

现在我得到了正确的文档宽度和高度

于 2015-01-22T05:23:45.670 回答
1

我在 Firefox 中通过 jquery 找到了这个奇怪的高度渲染的答案......

我在带有doctype的html标签中使用了class =“no-js”......当我删除它时,FF计算正确......所以我用jquery添加了这个类,就像这样$('html').addClass('no- js');

现在计算在所有浏览器中都是相同的..

于 2013-06-11T16:22:32.647 回答
1

您必须<!DOCTYPE html>在开始时使用标签,一切都会好起来的。

于 2019-04-21T13:20:50.033 回答
0

试试下面的代码:

$(function(){
  $(window).on('cwsObjectsShown', function() {
    alert($(this).height());
  });   
});
于 2012-10-17T15:17:56.060 回答