今晚在Chrome中为window.onresize
编写处理程序(最新版本6.0.472.55)时,我遇到了一个有趣的 bug 功能。首先打开两个选项卡,然后在第一个选项卡中打开this jsFiddle。
随意调整窗口大小,对话框按预期工作。现在,尝试切换到第二个选项卡-_-。选项卡更改后,为什么resize
会触发?如果我需要提交错误,有人可以提供见解/更多详细信息吗?
答案 0 :(得分:3)
Google bug has been filed。目前,我只是忽略了它,因为我的实际onresize
处理程序没有显示警告框。
答案 1 :(得分:1)
那怎么样?听起来像个臭虫。我猜想onresize
是由一系列行为收听的,可能是关于页面大小的新数据,无论出于何种原因,当关注标签时,这些数据会进入。
在我在Windows 5.0.375.127上使用的版本中,它不会发生,但如果我实际调整窗口大小,则resize事件将触发两次。
知道它在那里,你可以采取措施击败它(谷歌应该最终为你做)。围绕您的处理程序包装if
语句,如果您需要在事件(我们理解的话)实际上需要发生某些事情时,检查clientHeight
或clientWidth
中的实际更改发生。
答案 2 :(得分:1)
来自bug report:
在splitview中使用Dev Tools并切换到没有Dev的Tab 在split中打开的工具,resize-Event将被触发。
因此,如果下一个Tab没有相同的窗口大小,则resize()将会 被解雇了。
答案 3 :(得分:0)
如果没有关于Chrome如何处理标签切换和页面呈现的工作知识,我的猜测就像下一个人一样好(或坏,取决于你如何看待它)。我猜想重新渲染页面,或重新加载已经渲染的页面,如果它缓存它,会触发onresize
事件。这是切换选项卡时发生的情况。根据我的理论,我猜想Chrome不会在初始页面视图上触发调整大小事件,因为它的设计并非如此。但同样,由于我不知道Chrome如何在内部处理标签切换,这只是猜测(值得深思)。