Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(document).height()在刷新时随机化值(Safari 5.1.10)_Javascript_Jquery_Html_Css_Safari - Fatal编程技术网

Javascript $(document).height()在刷新时随机化值(Safari 5.1.10)

Javascript $(document).height()在刷新时随机化值(Safari 5.1.10),javascript,jquery,html,css,safari,Javascript,Jquery,Html,Css,Safari,我使用$(document).height()在块上设置heightCSS属性。这是Safari 5.1.10(OSX 10.6.8)的一个变通方法,因为vh单元(视口高度)在此版本上不起作用 (function() { if(!Modernizr.cssvhunit) $("#sidebar").css("height", $(document).height()+"px"); })(); 问题是,$(document).height()返回的值在每次刷新页面时都不相同。有时是视口的

我使用
$(document).height()
在块上设置
height
CSS属性。这是Safari 5.1.10(OSX 10.6.8)的一个变通方法,因为
vh
单元(视口高度)在此版本上不起作用

(function() {
    if(!Modernizr.cssvhunit) $("#sidebar").css("height", $(document).height()+"px");
})();
问题是,
$(document).height()
返回的值在每次刷新页面时都不相同。有时是视口的高度,有时是文档的高度,有时是介于两者之间的值

我使用:Modernizr 2.8.3来检测
vh
单元支持、jQuery 1.11.0、Lightbox 2.7.1(没有它仍然会出现问题)和Skeleton 2.0.4

我也尝试过这种解决方法,但没有成功:

function getDocHeight() {
    var D = document;
    return Math.max(
        D.body.scrollHeight, D.documentElement.scrollHeight,
        D.body.offsetHeight, D.documentElement.offsetHeight,
        D.body.clientHeight, D.documentElement.clientHeight
    );
}

我不知道是什么导致这个假定的常量变为变量…

有时,在一段时间后测量高度和宽度会有所帮助

说明:浏览器中的JS是一个基于evend的前端系统。重复以下步骤:

  • 接收用户/超时/AJAX事件
  • 运行JavaScript侦听器(如果有)
  • 重新呈现DOM更改
  • 页面呈现发生在#3,但JS代码在#2中运行,然后才确定显示元素的最终/适当大小。当#3已经完成时,将在#2中设置一个非常短的超时,以重新运行三步循环

    这就是为什么没有效果的原因,当你隐藏一个元素,然后显示它,甚至重复100次:在#2期间没有渲染hapens,如果你让它保持显示状态,#3将不会发现任何更改,什么也不会发生


    嗯,它不太优雅,需要额外的努力来编写UI程序,在需要时无法获得尺寸。

    听起来你可能在页面中的图像仍在加载时获得高度,因此页面仍在扩展


    在这种情况下,请尝试在
    $(窗口)下获取高度。改为加载(fn)
    事件,因为所有图像都应在该点加载。

    听起来您可能在页面中的图像仍在加载时获取高度,因此页面仍在扩展。尝试获取
    $(窗口)下的高度。改为加载(fn)
    事件,因为所有图像都应在该点加载。这就成功了,谢谢!很高兴它有帮助-我添加了它作为您的答案。它在超时的情况下工作,但是将CSS修改绑定到
    $(窗口)。load()
    事件更精确。Fyeah,图像加载!您可以在HTML/CSS中指定您的
    img
    大小。。。如果你知道的话。
    setTimeout(function() {
      // get w, h
    },1);