在Chrome(最新版本6.0.472.55)中爲window.onresize
編寫處理程序時,我今晚遇到了一個有趣的
錯誤
功能。首先打開兩個選項卡,然後在第一個選項卡中打開this jsFiddle。爲什麼Chrome瀏覽器(6.0.472.55)中更改標籤時觸發'window.resize'事件?
隨意調整窗口大小,對話框按預期工作。現在,嘗試切換到第二個標籤-_-。選項卡更改時爲什麼會觸發resize
?如果我需要提交錯誤,有人可以提供洞察力/更多細節嗎?
在Chrome(最新版本6.0.472.55)中爲window.onresize
編寫處理程序時,我今晚遇到了一個有趣的
錯誤
功能。首先打開兩個選項卡,然後在第一個選項卡中打開this jsFiddle。爲什麼Chrome瀏覽器(6.0.472.55)中更改標籤時觸發'window.resize'事件?
隨意調整窗口大小,對話框按預期工作。現在,嘗試切換到第二個標籤-_-。選項卡更改時爲什麼會觸發resize
?如果我需要提交錯誤,有人可以提供洞察力/更多細節嗎?
該bug has been filed與谷歌。目前,我剛剛忽略它,因爲我的實際onresize
處理程序不顯示警報框。
如果沒有Chrome處理標籤切換和頁面渲染的工作知識,我的猜測就像下一個人一樣好(或不好,取決於你如何看待它)。我猜想,重新渲染頁面,或者重新載入已經渲染的頁面(如果它緩存的話)會觸發onresize
事件。這是切換選項卡時發生的情況。按照我的理論,我猜想Chrome不會在初始頁面視圖中觸發resize事件,因爲它不是被設計的。但是,再次,因爲我不知道Chrome如何處理內部的標籤切換,這只是猜測(斟酌考慮)。
那怎麼樣?聽起來像一個錯誤。我猜想onresize
是通過行爲組合來監聽的,可能是有關頁面大小的新數據,無論出於何種原因,這些數據都會在選項卡聚焦時進入。
在我使用的Windows 5.0.375.127版本,它不會發生,但如果我實際調整窗口的大小,resize事件觸發兩次。
知道它在那裏,你可以採取一步來擊敗它(Google最終應該爲你做的)。在您的處理程序周圍包含一個if
聲明,該聲明檢查clientHeight
或clientWidth
中的實際更改,如果只有在發生事件(我們瞭解它)實際上發生時才需要發生某些情況。
當SPLITVIEW使用開發工具和切換,而無需開發一個Tab 工具在拆分開,調整大小,事件將被解僱。
因此,如果下一個選項卡不具有相同的窗口大小,resize()將被觸發。
非常有趣find-證實谷歌瀏覽器6.0.472.55 – 2010-09-15 00:23:27
我認爲這是一個錯誤:它不會觸發在Chrome 6.0.472.55在Linux(Ubuntu的10.4)選項卡上的變化 – Utaal 2010-09-15 00:28:15
我無法重現。 Mac OS X上的Chrome 7.0.517.5 dev – esqew 2010-09-15 00:35:29