2012-01-25 41 views
32

我有一個應用程序,在某些情況下會導致IE8彈出的兼容性消息和兼容模式重裝:什麼具體事情導致IE8觸發兼容模式?

顯示的問題引起的Internet Explorer中刷新網頁 使用兼容性視圖

據我所知,這很少見,並且不會由於元標籤而發生。它會作爲對改變DOM的用戶操作的響應而發生。這與https://superuser.com/questions/215281/how-do-i-stop-i-e-jumping-into-compatability-view的問題是一樣的,但我的問題是:什麼類型的東西導致這種情況,作爲修復它的幫助。

換句話說,看到這個網站thesitewizard.com,其中兼容模式在IE8第三原因描述爲:

,偶爾,其他一些深不可測,無證原因,在 頁是驗證爲符合標準(或至少在Release Candidate 1中爲 )。

而問題是:什麼深不可測的,無證的原因?

+0

我從來沒有見過HTML驗證頁面跳轉到兼容性視圖。但如何在沒有看到您的應用程序的情況下幫助您?否則,這裏的答案只是一串隨機猜測。 – Sparky

+2

請參閱問題標題。我正在尋找什麼類型的東西導致這種情況,以幫助指導調試。至於沒有看到它,請點擊問題中的超級用戶鏈接,它有一個截圖。 – mtyson

+0

我閱讀了標題並瞭解了您的要求。但是,提出一個不能產生特定正確答案或解決方案的問題可能會被封閉。 – Sparky

回答

7

長時間調試會話後(使用舊的學校警報,以找出什麼地方不及格),這個看似innocous DOM操作的行是罪魁禍首:

document.getElementById("literal"+varValue).style.display = "none"; 

這裏沒有錯誤,並且該元素顯然發現(即,這不是一個花園品種空指針)。

這是一個大規模的應用程序,圍繞此代碼有很多。我把它切換到跟隨,這顯然阻礙了這個問題:

setTimeout(function(){ 
      var layoutEl = document.getElementById("literal"+varValue); 
      if (layoutEl) 
       layoutEl.style.display = "none"; 
     },10) 
+2

對我來說,試圖隱藏特定的元素會導致IE8使用兼容性視圖來刷新頁面。我使用jQuery,儘管如此使用[.hide()](http://api.jquery.com/hide)並利用[持續時間](http://api.jquery.com/hide/#hide -duration-complete)選項做了訣竅,例如'$( '#ID')。隱藏(1)'。 – WynandB

5

以下內容來自於MSDN文章「Controlling default rendering」。


注意,某些特定條件下,比如這裏列出,可以強制Internet Explorer顯示在文檔兼容模式網頁在網頁中指定的不同。

  • 對頁面啓用兼容性視圖。
  • 頁面加載到Intranet區域,Internet Explorer配置爲使用兼容性視圖查看從Internet區域加載的頁面。
  • 頁面從用戶的本地文件系統(這意味着該頁面已加載到Intranet區域中)加載,並且Internet Explorer配置爲使用兼容性視圖查看從Internet區域加載的頁面。
  • Internet Explorer配置爲在兼容性視圖中顯示所有網站。
  • Internet Explorer配置爲使用兼容性視圖列表,該列表指定始終顯示在兼容性視圖中的一組網站。
  • 開發人員工具用於覆蓋網頁中指定的設置。
  • 網頁遇到頁面佈局錯誤,並且Internet Explorer配置爲通過在兼容性視圖中重新打開頁面來自動從此類錯誤中恢復。
  • 該頁面包含指示將其加載到特定區域的Web標記。

這些鏈接提供描述的Internet Explorer如何確定某個網頁的相應文檔模式的其他信息:

5

我知道你們媒體鏈接有你的答案,但今天我一直在尋找什麼是causi禁止IE8觸發兼容模式。 我搜索了JavaScript代碼,CSS(:第一,:最後,等),但它似乎是一些內嵌樣式:

最大高度與溢出組合..

所以這(也)觸發的兼容性模式,IE8:

style="overflow:scroll;max-height:200px;" 

而這個沒有,所以它解決了我的問題:

style="overflow:scroll;height:200px;" 

編輯: 我認爲這是有關: IE8 overflow:auto with max-height

+0

謝謝 - 如果你認爲它是一個好問題,請不要忘記提出問題 – mtyson

+0

我刪除了頁面上溢出的元素被迫在兼容性視圖中加載,並且頁面正常加載。發現問題。 – Pete

2

我知道這是一個古老的問題,但我想我會添加一些我剛碰到的東西。我遇到了一個問題,即兼容模式被迫,我無法追蹤到源代碼。我手動將頁面移出兼容模式,並注意到有些字符沒有顯示出來。它結束了被認爲是使用僞元素上的自定義字符項目符號列表:

li:before { 
    content: '\25B6'; 
} 

作爲速戰速決,我結束了剛剛改寫本作即小於9:

.lt-ie9 li:before { 
    content: ''; 
} 

This article給了我這個想法來尋找處理不當的角色。希望這可以幫助有人遇到類似的問題!