如何检测jquery中的文档大小更改

时间:2011-04-03 20:55:27

标签: javascript jquery browser resize size

所以假设单击某些内容会导致新内容被加载到屏幕上,因此文档的高度会发生变化,而之前没有滚动条,现在实际上有滚动条......

如何使用jquery

检测出类似的事情

将resize事件绑定到窗口上只检测窗口调整大小而将其绑定到文档中不起作用

3 个答案:

答案 0 :(得分:18)

<强>更新
请不要使用DOMSubtreeModified事件。它已经过时,已弃用且浏览器不支持。在99.9%的案例中,您可以收听不同的事件。很可能你是那些使用jQuery和做一些AJAX的人之一,所以请看看他们的AJAX docs


These是所有可用的活动。您必须检测$(document).bind('DOMSubtreeModified', function() { ... });并检查上一次触发的尺寸更改。

var height = $(this).height(),
    width  = $(this).width();
$(document).bind('DOMSubtreeModified', function() {
    if($(this).height() != height || $(this).width() != width) {
        recalibrate();
    }
});

此事件触发 时间任何对DOM完成。因此减慢浏览器的速度。

我们应该有更好的选择。您能否为您的情况提供更多信息?

答案 1 :(得分:0)

这是解决方案。

// ajdust margins when page size changes (ie rotate mobile device)
$(window).resize(function() {
  // Do something more useful
  console.log('doc height is ' + $(window).height());
});

答案 2 :(得分:-1)

您可以尝试像这样的百分比滚动事件: http://www.jquery4u.com/snippets/jquery-detect-scrolled-page/

您可能需要添加一项检查以查看是否存在垂直滚动条:

var hasVScroll = document.body.scrollHeight > document.body.clientHeight;