2011-06-30 88 views
2

用戶最近報道這個神祕的錯誤:在one of my pages當IE我的頁面加載,窗口立即跳轉後面其他窗口

  • 當它加載在IE瀏覽器(IE8中觀察到,這是在其他版本狀態未知);和
  • 至少一個其它窗口是後面IE打開

會出現以下情況:

  • 的所有其他窗口後面IE窗口移動;和
  • 它保持其焦點。這意味着窗口的任務欄按鈕被按下,即使窗口完全隱藏,頁面也會收到所有預期的按鍵事件。
  • 試圖將IE帶到前臺是徒勞的。只要還有另一扇窗戶隱藏起來,它就會立即跳回來。

我決不是IE專家。我爲那些罕見的場合保留一個XP虛擬機,當我必須使用IE或Windows。所以我不熟悉如何開始追蹤這個bug。有人能幫我找出這個bug嗎?

+0

我敢打賭,它與那些被稱爲IE8和9的「setBlur()」函數有關。嘗試讓它停止執行任何操作。 – Pointy

+0

@Pointy:謝謝。似乎IE8不喜歡那個功能。你(或其他人)知道這個bug是否也發生在IE9中?我沒有Vista或更新的機器,所以我無法安裝IE9。 –

+1

作爲後續工作,IE9在這方面與IE8相同。 –

回答

3

我以前有過同樣的問題 - 身體模糊[document.body.blur()只能在IE中使用]。執行此操作的函數是您的源文件中的setBlur()。

當前版本:

function setBlur(items) { 
    var item; 
    for (var i = 0; i < items.length; i++) { 
     item = items[i]; 
     if (item.id == "search-box-wrapper") continue; 
     if (item.children) setBlur(item.children); 
     try { 
      item.onfocus = function() { 
       this.blur(); 
      }; 
     } catch (e) { 
      if (console) console.warn(e); 
     } 
    } 
} 

排除版本體模糊(您解決問題,希望):

function setBlur(items) { 
    var item; 
    for (var i = 0; i < items.length; i++) { 
     item = items[i]; 
     if (item.id == "search-box-wrapper" || (item.tagName).toUpperCase() == "BODY") continue; 
     if (item.children) setBlur(item.children); 
     try { 
      item.onfocus = function() { 
       this.blur(); 
      }; 
     } catch (e) { 
      if (console) console.warn(e); 
     } 
    } 
} 

這可以確保功能setBlur()不能用偶然模糊了身體,雖然沒有解決調用setBlur([document.body,...,...])的函數。

+0

我遲遲沒有注意到我從未接受過答案。我使用了一種替代方法來避免模糊身體,現在這個bug已經死了。 –