1

我維護一個遺留的Web應用程序,它有許多舊的怪異模式頁面,以及許多較新的標準模式頁面。IE10開發工具如何報告兼容性視圖?

在IE10中,如果我們的域名在IE的兼容性列表中,我正在從IE獲取混合消息。

  • 開發工具報告該頁面處於瀏覽器模式IE10兼容視圖。
  • 頁面的外觀表明它處於標準模式。
  • 的userAgent說,MSIE 10.0,三叉戟/ 6.0(建議不COMPAT查看)

如果我更改了從IE10 COMPAT查看到IE10開發工具瀏覽器模式,然後回到COMPAT查看,我得到:

  • 開發者工具報告的頁面是在IE10 COMPAT視圖(如前)
  • 頁面的外觀表明它是compat的看法。
  • 的userAgent說,它MSIE 7.0,三叉戟/ 6.0(表明它在COMPAT的觀點是)

待辦事項IE10開發工具有時誤傳爲瀏覽器模式?例如,基於兼容性列表或其他標準猜測模式,當頁面由於doctype和X-UA兼容設置爲IE = edge而進入標準模式時?

或者是documentMode和userAgent不能可靠地測試我們所在的模式?

基本上,我們希望告訴用戶「嘿,你不需要把我們的網站放在你的兼容性視圖列表中」,如果我們發現它們處於這種模式。

+0

謝謝尼科。是的,我沒有那麼多試圖測試舊瀏覽器的行爲(我們按照你的建議在vm中這樣做)。我試圖在運行時識別他們是否在他們的瀏覽器中使用了非最優文檔模式,以便我們建議他們不要這樣做。我試圖告訴開發工具是否會誤導我如何檢測這種情況。 – 2014-10-08 16:40:39

回答

2

測試用戶代理字符串足以確定頁面是否處於兼容性視圖模式。如果UA字符串是MSIE 10.0, Trident/6.0,則可以相信該頁面處於IE 10標準模式。因此,在第一種情況下,我不會相信開發人員工具報告的「瀏覽器模式:IE10兼容視圖」,因爲您觀察建議標準模式的頁面的外觀而產生了這種情況。

對於你的情況,如果是在請求的UA字符串,這意味着,兼容性視圖設置列表不被尊重。瀏覽器模式和UA字符串是在請求發出之前生成的,因此它們不受響應中的X-UA-Compatible標記或doctype的影響。無論出於何種原因,IE10似乎並不尊重您的域的兼容性視圖設置列表中的條目。下面是一個過程from MSDN的說明:

Browser Mode/Document Mode System Overview illustration http://ie.microsoft.com/testdrive/ieblog/2010/Oct/19_TestingsiteswithBrowserModevsDocMode_1.png

據我所知,你可以依靠用戶代理字符串來確定何時告知您的訪客,他們可以從他們的兼容性視圖中刪除網站設置列表(或取消選擇兼容性視圖按鈕)。具體而言,如果字符串是MSIE 7.0, Trident/6.0,則瀏覽器模式是Internet Explorer 7,並且如Trident/6.0所示的瀏覽器是IE10。

有一個來自MSDN的really good blog post關於IE9的詳細介紹,通過瀏覽器模式和文檔模式詳細介紹了瀏覽器和UA字符串在這些不同情況下的行爲。不幸的是,我還沒有找到關於IE10的類似詳細的帖子,但我猜想/希望這種行爲是相似的。

最後說明:當您說網絡應用程序有許多古怪的頁面時,我擔心文檔模式(怪癖)和瀏覽器模式(兼容性視圖)之間的混淆。我猜這不是你問題的一部分,但是因爲這個區別在過去讓我感到沮喪,所以我只想在這裏提及它。

2

userAgent中的值是正確的測試;無論開發工具是什麼,Trident/6.0都不意味着compat模式。

+0

至少在IE 9中,根據[this](http://blogs.msdn.com/b/ie/archive/2010/10/19/testing-sites-with-browser-mode-vs-doc-mode .aspx),在兼容性視圖中,「IE9報告UA字符串,版本向量和文檔模式,就好像它是IE7;但是,UA字符串還包含Trident/5.0令牌,表明瀏覽器確實是IE9。如果他們點擊兼容性視圖按鈕,使用此模式測試IE9用戶如何體驗您的網站。「 – 2014-10-08 17:33:59