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

时间:2012-10-17 15:10:03

标签: jquery firefox jquery-1.8

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

我正在使用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');
});

7 个答案:

答案 0 :(得分: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。)

答案 1 :(得分:4)

尝试此功能:

function GetBrowserDim() {
    if (window.innerHeight) {
        return { w: window.innerWidth, h: window.innerHeight};
    } else {
        return { w: document.body.clientWidth, h: document.body.clientHeight };
    }
}

答案 2 :(得分:2)

在我的情况下,我必须删除html元素中的属性

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

改为

<html>

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

答案 3 :(得分:2)

$(window).height()以及$(window).width()在IE中返回0 在兼容模式下。不在FireFox中检查,可能是相同的。 尝试使用$(document).height()或$(document).width()代替。

答案 4 :(得分:1)

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

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

现在所有浏览器中的calaled相同..

答案 5 :(得分:0)

请尝试以下代码:

$(function(){
  $(window).on('cwsObjectsShown', function() {
    alert($(this).height());
  });   
});

答案 6 :(得分:0)

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