【发布时间】:2013-11-07 06:46:09
【问题描述】:
我注意到 jQuery 的 $.resize() 事件在页面加载时被触发,而没有根据浏览器对窗口进行任何实际的“调整大小”。
它不仅会触发一次,有时甚至会触发两次。 (在 Chrome 中加载 30.0.1599.101 m,在 Opera 中调整大小...)
这种行为正常吗?没有任何方法可以统一所有浏览器在加载网站时的这种行为吗?
当调整大小已经完成 (using an interval) 时,我已经只调用了一次 resize,但这并不能解决 Chrome 加载时触发事件的问题。
我无法创建重现此问题的小提琴,但您可以使用如下文件测试此行为:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(window).resize(function() {
alert("Fired!");
});
</script>
</head>
<body>
</body>
</html>
第一次使用 Chrome 加载页面时将触发该事件。 它不会在任何刷新时触发。
【问题讨论】:
-
当文档加载(即准备好)时,如何挂钩事件处理程序?
$(document).ready(function() { $(window).resize(function() { alert("Fired!"); }); });我不确定这是否是您正在寻找的答案,因为您在文本中提出了两个与本文标题有些脱节的单独问题。 -
@EiríkurFannarTorfason 这不会阻止事件在加载时触发。
-
看来你是对的。当我第一次测试它时,这似乎对我有用,但现在我有时会在窗口加载后不久触发调整大小事件处理程序。
-
您的测试 HTML 并未确认 Chrome 36 的该问题。但我也可以看到(至少在 x 尺寸 iframe 内)。
标签: javascript jquery jquery-1.8