IE(FF)中的$(window).height()问题

时间:2012-09-07 21:08:21

标签: jquery cross-browser height

我写了一个脚本,在我的页面中创建一个动态大小的div(#table)。我还有一个菜单(#menu),里面有nav,用于确定最小高度。在Chrome和Safari中,一切正常,但在IE / FF中并没有那么多。在这两个问题中,我遇到了同样的问题:如果我全屏加载页面然后使用最小化按钮将其最小化,那么它将采用错误的$(window).height()。如果我将它重新加载最小化,它可以正常工作,我甚至可以调整大小以使div调整好。我把一些图像清楚地说明了我在说什么。

使用FF我还有另外一个问题。当窗口大小大于菜单时,它总是在div的底部有一个空格。它就像我在其他浏览器中应用的值不适合Firefox。 这个问题只与身高有关。动态宽度可以正常工作。

我的浏览器的版本如下:我认为它们是最新版本。

  • Chrome 21.0.1180.89 m
  • Safari 5.1.7
  • Internet Explorer 9
  • Firefox 14.0.1

这是我的javascript / jQuery代码:

<!-- Menu resize -->
<script type='text/javascript'>
$(function(){
    $('#menu').css({'height':(($(window).height())-350)+'px'});
    $('#table').css({'height':(($(window).height())-225)+'px'});
    $('#table').css({'min-height':(($('nav').height())-15)+'px'});
    $('#table').css({'width':(($(window).width())-135)+'px'});

    $(window).resize(function(){
          $('#menu').css({'height':(($(window).height())-350)+'px'});
          $('#table').css({'height':(($(window).height())-225)+'px'});
          $('#table').css({'width':(($(window).width())-151)+'px'});
    });
});
</script>

部分页面样式

/* NAV */

#line{
    width:1px;
    position:absolute;
    left:147px;
    top:123px;
    bottom:0px;
    background-color:#b3b3b3;
}

nav{
    width:147px;
    min-height: 100%;
    float:left;
}

nav ul{
    list-style:none;
    padding:0px;
    margin:0px;
}

nav li{
    display:block;
    width:147px;
    height:24px;
    line-height:24px;
    border-bottom: 1px solid #b3b3b3;
    text-indent:30px;

    -moz-box-shadow:    inset 1px 1px 1px #ffffff;
    -webkit-box-shadow: inset 1px 1px 1px #ffffff;
    box-shadow:         inset 1px 1px 1px #ffffff;
}

nav li a{
    color:#808080;
    font-size:14px;
    text-decoration:none;
    display:block;
}

nav li:hover{
    background-color:#cccccc;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
}

nav li .active{
    background-color:#fdad06;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
}

nav li a.active{
    color:#7e5303;
}

nav li:first-child{
    border-top: 1px solid #b3b3b3;
}

nav #group{
    width:148px;
    height:49px;
    font-size:14px;
    font-weight:bold;
    line-height:49px;
    text-indent:22px;
}

/* SECTION */

#menu_and_content{
    width:auto;
    display:block;
    background-image:url(images/background.jpg);
    box-shadow:inset 0 5px 5px rgba(0,0,0,.2) 
}

#menu_and_content #menu{
    width:148px;
    vertical-align:top;
    border-right-style:solid;
    border-right-width:1px;
    border-right-color:#b3b3b3;
    padding: 0px 0px 20px 0px;
}

#menu_and_content #content{
    width:100%;
    vertical-align:top;
}

#table{
    overflow-x:scroll;
    overflow-y:scroll;
    width:500px;
}

#table table{
    width:100%;
    font-size:11px;
    padding:25px 25px 25px 25px;
    text-align:left;
    }

#table table thead th{
    font-size:12px;
    font-weight:bold;
    color:#969696;
    cursor:pointer;
}

#content table td, th{
    border-bottom:solid;
    border-bottom-color:#afafaf;
    border-bottom-width:1px;
    white-space: nowrap;
    padding:0px 5px 0px 10px;
    line-height:24px;
}

#content table td:first-of-type, th:first-of-type {
    padding-left:4px;   
}

#content table tr:hover:not(#captions){
    background-color:rgba(255,255,255,0.4);
    color:#3e3a34;
    cursor:pointer;
}

#content table input[type='checkbox']{
    margin-top:2px;
    border-color:#949494;
}

#login_container{display:block; height:260px;}

这里是图片:

LAYOUT

CHROME

SAFARI

INTERNET EXPLORER (PROBLEM 1)

FIREFOX (PROBLEM 1)

FIREFOX (PROBLEM 2)

3 个答案:

答案 0 :(得分:2)

我遇到了与Firefox相同的问题,我解决了它添加到我的所有HTML文件。在这个堆栈溢出问题中指出了解决方案:

Why does Firefox return 0 as the value of $(window).height()

jQuery 1.8.1 发行说明

  

不要使用Quirks模式! jQuery从未支持Quirks模式和我们   不要在Quirks中进行任何测试。这可能会影响像   $(“window”)。height()和jQuery 1.8 Quirks模式结果   更改以支持一些现代浏览器功能。大多数   我们见过的问题案例来自想要进入的开发人员   标准模式但之前有无效的doctype或无关标记   他们的标签。如有疑问,请使用简单和简短。

答案 1 :(得分:0)

尝试innerHeight()outerHeight()而不是height()

可能不包括填充/边框/边距

答案 2 :(得分:0)

请看一下这个博客。他对浏览器中的屏幕测量进行了非常详细的研究

http://tripleodeon.com/2011/12/first-understand-your-screen/