代码之家  ›  专栏  ›  技术社区  ›  M1ke

Jquery,.height()在页面刷新时更改,但在加载时更改

  •  2
  • M1ke  · 技术社区  · 14 年前

    我已经看到了以下主题:

    Jquery Loading problem on first load / hard refresh

    这似乎是我遇到的问题的一个相反版本。在这种情况下,硬刷新是问题所在,在这种情况下,它是解决方案。

    由于设计一个复杂的web应用程序UI来处理不同的监视高度时遇到了一些问题,我决定求助于jQUery来为自己改变高度。我最初使用的是百分比高度,但这导致了点之间的巨大差距,使用最大和最小高度被证明很难将元素拖出上下文。在没有启用JavaScript的情况下,应用程序的使用速度要慢得多(尽管它是基于渐进式增强而构建的),因此它假设用户将打开它。这是给那些建议CSS解决方案的人的。

    链接到测试 已删除,因为域不再有效

    问题是,当页面通过超链接加载时,它的大小是正确的——如果您打开了它,您应该会看到这个,在黄色/绿色框底部和浏览器底部之间大约有30px。但是,刷新它(您可能需要刷新几次),您将看到黄色的框从页面底部消失,绿色的框拉伸以连接它。这只在我的服务器上实时发生-我在本地主机上开发时从未注意到这个错误,因为它不会发生。

    jquery代码位于sandpit1.1webservices.co.uk/ground-control/examples/scripts/jumpers.js中,具体代码片段如下:

    function loadResize()
    {
     //var window=$(window).height();
     var window=$('div.main').height();
     //window=parseInt(window);
     window-=50;
     $('div.staff ul').css('height',window);
     window-=175;
     $('div.loads').css('height',window);
     window-=150;
     $('div.loads div.list').css('height',window);
    }
    

    你可以看到我有一些评论,在实际的测试代码中还有更多。当窗口高度在测试开始时被提醒时,它在我的浏览器上显示为885(屏幕高度为1024px),但是刷新会给出1133到1785之间的随机值。做一个硬刷新或页面加载,它回到885。函数在document.ready的末尾调用:

    $(window).resize(loadResize);
    loadResize();
    

    我曾经有调整大小事件触发器本身,但删除它,以防它引起问题。

    有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  11
  •   M1ke    12 年前

    我最终通过移动 loadResize() 功能来自 $(document).ready() 事件到 $(window).load() 事件。这是正确的,因为文档就绪在构造DOM之后,但在下载其他元素之前触发。因此,图片和自定义字体(都在页面上)等项会影响大小计算-根据网络速度和当时加载的内容,将为第一个事件提供不同的高度。

        2
  •  0
  •   Josh Bedo    14 年前

    尝试将其写为$(函数loadresize(){并以}结尾);