【发布时间】:2011-07-28 19:05:18
【问题描述】:
因此假设单击某些内容会导致新内容加载到屏幕上,因此文档的高度会发生变化,而以前没有滚动条,现在实际上有滚动条...
我如何使用 jquery 检测到发生的类似情况
将调整大小事件绑定到窗口仅检测窗口调整大小,而将其绑定到文档不起作用
【问题讨论】:
标签: javascript jquery browser resize size
因此假设单击某些内容会导致新内容加载到屏幕上,因此文档的高度会发生变化,而以前没有滚动条,现在实际上有滚动条...
我如何使用 jquery 检测到发生的类似情况
将调整大小事件绑定到窗口仅检测窗口调整大小,而将其绑定到文档不起作用
【问题讨论】:
标签: javascript jquery browser resize size
更新:
请不要使用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 执行任何操作时都会触发此事件。因此它会减慢您的浏览器速度。
我们应该找到一个更好的选择。您能否向我们提供有关您的方案的更多信息?
【讨论】:
$(document) 更改为$("body") 或类似的东西。
.load() 的回调函数中包含检查。
您可以尝试像这样的百分比滚动事件: http://www.jquery4u.com/snippets/jquery-detect-scrolled-page/
您可能需要添加检查以查看是否存在垂直滚动条:
var hasVScroll = document.body.scrollHeight > document.body.clientHeight;
【讨论】:
这是解决方案。
// ajdust margins when page size changes (ie rotate mobile device)
$(window).resize(function() {
// Do something more useful
console.log('doc height is ' + $(window).height());
});
【讨论】: