【问题标题】:Why does the 'window.resize' event fire when changing tabs in Chrome (6.0.472.55)?为什么在 Chrome (6.0.472.55) 中更改标签时会触发“window.resize”事件?
【发布时间】:2010-09-15 00:20:50
【问题描述】:

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

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

【问题讨论】:

  • 非常有趣的发现 - 确认 Google Chrome 6.0.472.55
  • 我认为这是一个错误:它不会在 Linux (Ubuntu 10.4) 上的 Chrome 6.0.472.55 中的选项卡更改时触发
  • 我无法复制。 Mac OS X 上的 Chrome 7.0.517.5 开发版

标签: javascript google-chrome


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    那怎么样?听起来像一个错误。我猜想onresize 是通过一系列行为来监听的,可能是关于页面大小的新数据,无论出于何种原因,当一个标签被聚焦时,这些数据就会进入。

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

    知道它的存在,您就可以采取措施打败它(Google 最终应该为您做的)。将if 语句包裹在您的处理程序周围,以检查clientHeightclientWidth 中的实际更改,如果您需要仅在事件(据我们理解)实际 发生时发生某些事情。

    【讨论】:

      【解决方案3】:

      来自bug report

      在拆分视图中使用开发工具并切换到没有开发的选项卡时 拆分打开的工具,将触发调整大小事件。

      所以,如果下一个 Tab 没有相同的窗口大小,resize() 将 被解雇。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2018-06-02
          • 1970-01-01
          • 2010-12-23
          • 2019-04-22
          • 1970-01-01
          • 2014-11-04
          • 1970-01-01
          • 1970-01-01
          • 2014-07-09
          相关资源
          最近更新 更多