代码之家  ›  专栏  ›  技术社区  ›  TheCloudlessSky

为什么在chrome(6.0.472.55)中更改选项卡时会触发“window.resize”事件?

  •  8
  • TheCloudlessSky  · 技术社区  · 14 年前

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

    随意调整窗口大小,对话框按预期工作。现在,尝试切换到第二个选项卡-。为什么是 resize 当标签改变时开火?如果我需要提交一个bug,有人能提供细节吗?

    4 回复  |  直到 12 年前
        1
  •  3
  •   TheCloudlessSky    14 年前

    这个 bug has been filed 使用谷歌。目前,我只是忽略了它,因为我的实际 onresize 处理程序不显示警告框。

        2
  •  1
  •   Isaac Lubow    14 年前

    那怎么样?听起来像个虫子。我想是吧 onresize 是通过一系列的行为来倾听的,可能是关于页面大小的新数据,无论出于什么原因,当标签被聚焦时,这些数据都会出现。

    在我在Windows上使用的版本5.0.375.127中,不会发生这种情况,但如果我实际调整了窗口的大小,则会触发“调整大小”事件。 两次 .

    知道它在那里,你可以采取一个步骤击败它(谷歌最终应该为你做的)。包装 if 在处理程序周围检查 clientHeight clientWidth 如果你只需要事件发生(如我们理解的那样) 事实上 发生。

        3
  •  1
  •   Kevin C.    12 年前

    来自 bug report :

    在SplitView中使用dev工具并切换到不带dev的选项卡时 在split中打开的工具,将激发Resize事件。

    因此,如果下一个选项卡没有相同的窗口大小,那么resize()将 被解雇。

        4
  •  0
  •   Chris Laplante    14 年前

    如果不了解chrome如何处理选项卡切换和页面呈现,我的猜测和下一个人的猜测一样好(或不好,取决于你如何看待它)。我想重新发送页面,或者重新加载已经呈现的页面(如果它缓存了页面),会触发 onresize 事件。这就是切换选项卡时发生的情况。根据我的理论,我猜Chrome不会在初始页面视图上触发调整大小事件,因为它是被设计为不触发调整大小事件的。但同样,由于我不知道Chrome如何处理内部标签切换,这只是一种猜测(思考的食物)。