Настройка мета-тега, совместимого с X-UA, на сайте ASP.NET 4.0 не работает - PullRequest
0 голосов
/ 30 июля 2010

Насколько я понимаю, вы можете сказать IE8 (и я полагаю, более поздние версии), как лучше всего отобразить вашу страницу.

Это полезно, потому что страница, возможно, была разработана для IE7, режима причуд или для целиРежим стандартов IE8.Как я понимаю, поведение по умолчанию для IE8, когда он встречает страницу, состоит в том, чтобы отображать в режиме стандартов IE8 (хотя не уверен, как он интерпретирует DOCTYPE).С этим значением по умолчанию пользователь может изменить режим рендеринга, нажав кнопку «Просмотр совместимости» рядом с кнопкой обновления.

Это удобно, если пользователь дает некоторый контроль, но плохо, когда вы знаете, что ваш сайт только рендеритхорошо с IE7 или что-то еще.В этом случае вы не хотите, чтобы пользователь мог сделать неправильный выбор, и именно здесь возможность веб-сайта сообщить браузеру> = IE8, как отображать страницу, очень полезна.

У вас просто естьпредоставить метатег X-UA-Compatible внутри тега head.В сети есть множество ссылок, как это сделать и какие значения можно использовать.Не забудьте сделать его первым.

<html xmlns="http://www.w3.org/1999/xhtml">
  <head  id="Head1" runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=7" />

ОК, так что пока ничего нового - но он не работает для моего проекта ASP.NET?Я пробовал это на нескольких других проектах, которые у меня есть, и с той же проблемой.

Возможно, есть сценарий, где, потому что я использую инструменты разработчика, такие как Visual Studio и т. Д., Для которых IE был настроен всегдапоказать кнопку «Просмотр совместимости» для целей отладки?Я держусь за соломинку здесь, я знаю.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2013

Для этого есть интересный обходной путь .Я включу суть, чтобы сделать его проще:

Параметр "styleSheetTheme" всегда помещает свой файл CSS в верхний колонтитул, прежде чем что-либо еще.Чтобы переместить «X-UA-Compatible» перед ним, вам нужно будет сделать следующее:

  1. Сделать метатег доступным из кода сервера, задав ему идентификатор и добавив «runat»Атрибут: ...
  2. Добавьте следующий обработчик события предварительной визуализации на свою страницу (или главную страницу):
protected void Page_PreRender(object sender, EventArgs e)
{
    Control MyFirstCtrl = Page.Header.FindControl("FirstCtrlID");
    Page.Header.Controls.Remove(MyFirstCtrl);
    Page.Header.Controls.AddAt(0, MyFirstCtrl);
}

Вы можете перемещать объектытаким образом, в заголовке для всего, что вы там явно определили.

0 голосов
/ 30 июля 2010

Я узнал, почему это происходит.

Кажется, что тема ASP.NET мешает.При просмотре выходных данных «сотни» есть динамически вставленный тег для таблицы стилей (по одному для каждого) из темы.

Механизм тем ASP.NET вставляет эти элементы над метатегом X-UA-Compatible, таким образомнарушая ожидание IE иметь его в качестве первого тега в элементе head.

Таким образом, сайт ASP.NET с темой и следующим источником:

<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head  id="Head1" runat="server"> 
    <meta http-equiv="X-UA-Compatible" content="IE=7" />

будет обработан.следующим образом:

<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head id="ctl00_Head1"> 
    <link href="App_Themes/White/Default.css" type="text/css" rel="stylesheet" />
    <meta http-equiv="X-UA-Compatible" content="IE=7" />

Это похоже на ошибку.Я создам проблему MS Connect для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...