2011-10-27 81 views
15

我正在使用Flot繪圖庫。它似乎在IE8和IE9中工作正常,但問題出現在IE9兼容性視圖中時 - 它不呈現任何圖形。我懷疑這是因爲它使用了很多HTML5 canvas對象,但我可能是錯的。我試圖做以下幾點:似乎無法擺脫兼容性視圖?

  • 地址:<meta http-equiv="X-UA-Compatible" content="IE=Edge" />到我的HTML標籤<head></head>。我甚至試過IE=8IE=9,那也沒有幫助。我的標籤是這樣的:

    <!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.1EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
        <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
        ... 
    </head> 
    <body> 
    ... 
    </body> 
    </html> 
    
  • 因爲我仍然看到這個問題,我增加了以下我的Global.asax.cs文件:

    void Application_End(object sender, EventArgs e) 
    { 
        // Code that runs on application shutdown 
        Response.Headers.Add("X-UA-Compatible", "IE=Edge"); 
    } 
    

我我仍然面臨這個問題。我得到的錯誤是這樣的:

HTML1202: http://intranetdomain/SampleProj/Default.aspx is running in Compatibility View because 'Display intranet sites in Compatibility View' is checked. 
Default.aspx 
HTML1113: Document mode restart from IE7 Standards to IE9 Standards 
Default.aspx 

反正有反覆騎這呢?

編輯:檢查我的響應標題,添加該行Global.asax.cs沒有將它們添加到我的標題。我想知道爲什麼。

響應頭:

Key Value 
Response HTTP/1.1 200 OK 
Cache-Control private 
Content-Type text/html; charset=utf-8 
Server Microsoft-IIS/7.5 
X-AspNet-Version 4.0.30319 
X-Powered-By ASP.NET 
Date Thu, 27 Oct 2011 20:39:55 GMT 
Content-Length 29088 

編輯2:顯然,Application_End是錯誤事件。相反,這樣做注入元素到頁眉:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    Response.Headers.Add("X-UA-Compatible", "IE=Edge"); 
} 

但問題本身仍然存在。

+1

你嘗試將其添加爲'後的第一個標籤'? IE只在元標記列表中首先出現時纔回應。 – SliverNinja

+0

@SliverNinja:是的。我把它當成我的第一個標籤。還使用我正在使用的確切標記更新了我的問題。 – Legend

+0

應該按照這裏的流行反饋工作(http://stackoverflow.com/questions/637039/how-to-avoid-ie8-compatibility-button)。 – SliverNinja

回答

28

問題可能是由於您的Internet Explorer兼容性視圖設置。如果轉到「工具」菜單,然後轉到「兼容性視圖設置」,請確保「在兼容性視圖中顯示Intranet站點」爲而不是已選中。您可能會看到IE強制您根據您的主機名被檢測爲在您的Intranet中進入兼容性視圖。

請注意,根據您的IE版本,您可能需要按下左側的Alt按鈕才能顯示菜單欄,從中可以打開「工具」菜單。

+0

是。雖然我可以自己改變這個,但我想重寫這個設置(雖然我不是這很有意義)。我甚至無法檢測到這個模式,因爲這個檢查:'if($ .browser.msie && parseInt($。browser.version)!= 9){alert(「Not IE9!」}「沒有發現IE9處於兼容模式。 – Legend

+1

我認爲您不能覆蓋該兼容性設置。請參閱http://stackoverflow.com/questions/3726357/why-does-ie9-switch-to-compatibility-mode-on-my-website/3726605#3726605上的評論。 – Jacob

+1

如果您正在本地運行,請確保你通過你的hostfile欺騙了一個'活的'URL虐待認爲該網站是一個互聯網網站。 – sidonaldson

0

奇怪的是 - 如果你刪除runat="server"meta標籤將工作,按鈕將消失。 BNut當然不建議刪除runat

3

您可以直接在IIS上設置兼容性設置。如果您點擊該站點並打開響應頭,則可以添加X-UA兼容值,其值爲IE = X,其中X是您的目標版本。您也可以在服務器級別設置它。但請記住,如果您在同一個框中有多個網站,則可能會遇到這些問題。儘管您可以在服務器級應用,然後從站點級別刪除繼承的配置。

+1

這不能覆蓋IE認爲該網站是一個Intranet網站! – sidonaldson

+1

這對我有用。我在本地使用IIS Express來開發帶有JQuery 2的站點。它與IE 10似乎默認爲本地站點的IE 7模式不兼容。打開配置文件%UserProfile%\ My Documents \ IISExpress \ config \ applicationhost.config和。請參閱http://msdn.microsoft.com/en-us/library/jj676913(v=vs.85).aspx –

2

兩年後,兩個新版本的IE後來,這個IE8問題仍然是造成問題!

我發現,對於我們公司的ASP.Net應用程序,在web.config,網頁或其背後的代碼中添加「X-UA兼容」,完全沒有區別。

,對我們工作的唯一的事情是手動取消勾選了「兼容性視圖中顯示Intranet設置」複選框:

Turn off Display intranet sets in Compatibility View

+0

同樣在這裏...我不希望所有用戶取消選中此複選框:( –