Кажется, не может избавиться от просмотра совместимости?

Я использую Flot графическую библиотеку. Кажется, что он отлично работает в IE8 и IE9, но проблема возникает, когда в представлении совместимости IE9 - он не отображает ни один из графиков. Я подозреваю, что это из-за объекта HTML5 canvas, который он использует, но я мог ошибаться. Я попытался сделать следующее:

  • Добавьте: <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> в тег HTML <head></head>. Я даже пробовал IE=8 и IE=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

Есть ли вообще все это?

EDIT: Проверка заголовков ответов, добавив, что строка в 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

EDIT 2: По-видимому, Application_End было неправильным событием. Вместо этого это ввело элемент в заголовок:

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

Но сама проблема по-прежнему сохраняется.

Ответы

Ответ 1

Проблема может быть связана с настройками просмотра совместимости Internet Explorer. Если вы перейдете в меню "Инструменты", а затем в "Параметры просмотра совместимости", убедитесь, что "Показывать сайты интрасети в режиме совместимости" не проверяется. Вы можете видеть, что IE заставляет вас просматривать совместимость на основе вашего имени хоста, находящегося в вашей интрасети.

Обратите внимание, что - в зависимости от вашей версии IE - вам может понадобиться нажать левую клавишу Alt для отображения строки меню, откуда открывается меню "Инструменты".

Ответ 2

Вы можете установить параметры совместимости непосредственно в IIS. Если вы нажмете на сайт и откройте заголовки ответов, вы можете добавить X-UA-Compatible со значением IE = X, где X - ваша целевая версия. Вы также можете установить это на уровне сервера. Но имейте в виду, если у вас несколько сайтов в одном окне, у вас могут возникнуть проблемы с ними. Вместо этого вы можете применить на уровне сервера, а затем удалить унаследованную конфигурацию с уровня сайта.

Ответ 3

Два года и два новых выпуска IE позже, и эта проблема IE8 все еще вызывает проблемы!

Я обнаружил, что для приложения ASP.Net нашей компании добавление "X-UA-Compatible" в web.config, на веб-страницах или их код позади, не имело никакого значения.

Единственное, что сработало для нас, - это вручную отключить флажок "Показывать интрасети в представлении совместимости":

Turn off Display intranet sets in Compatibility View

Ответ 4

Странно: если вы удалите runat="server", тег meta будет работать, и кнопка исчезнет. BNut, конечно, не рекомендуется удалять runat.