为什么在更改Chrome(6.0.472.55)中的标签时会触发“window.resize”事件?

时间:2010-09-15 00:20:51

标签: javascript google-chrome

今晚在Chrome中为window.onresize编写处理程序(最新版本6.0.472.55)时,我遇到了一个有趣的 bug 功能。首先打开两个选项卡,然后在第一个选项卡中打开this jsFiddle

随意调整窗口大小,对话框按预期工作。现在,尝试切换到第二个选项卡-_-。选项卡更改后,为什么resize会触发?如果我需要提交错误,有人可以提供见解/更多详细信息吗?

4 个答案:

答案 0 :(得分:3)

Google bug has been filed。目前,我只是忽略了它,因为我的实际onresize处理程序没有显示警告框。

答案 1 :(得分:1)

那怎么样?听起来像个臭虫。我猜想onresize是由一系列行为收听的,可能是关于页面大小的新数据,无论出于何种原因,当关注标签时,这些数据会进入。

在我在Windows 5.0.375.127上使用的版本中,它不会发生,但如果我实际调整窗口大小,则resize事件将触发两次

知道它在那里,你可以采取措施击败它(谷歌应该最终为你做)。围绕您的处理程序包装if语句,如果您需要在事件(我们理解的话)实际上需要发生某些事情时,检查clientHeightclientWidth中的实际更改发生。

答案 2 :(得分:1)

来自bug report

  

在splitview中使用Dev Tools并切换到没有Dev的Tab   在split中打开的工具,resize-Event将被触发。

     

因此,如果下一个Tab没有相同的窗口大小,则resize()将会   被解雇了。

答案 3 :(得分:0)

如果没有关于Chrome如何处理标签切换和页面呈现的工作知识,我的猜测就像下一个人一样好(或坏,取决于你如何看待它)。我猜想重新渲染页面,或重新加载已经渲染的页面,如果它缓存它,会触发onresize事件。这是切换选项卡时发生的情况。根据我的理论,我猜想Chrome不会在初始页面视图上触发调整大小事件,因为它的设计并非如此。但同样,由于我不知道Chrome如何在内部处理标签切换,这只是猜测(值得深思)。