2015-04-16 2 views
0

Я не могу видеть значения placeplace на входных элементах, когда вход пуст и не выбран. Входные элементы:Введенный атрибут «placeholder» больше не работает в IE при использовании AntiXssEncoder

<input id="OldPassword" runat="server" type="password" class="form-control" name="password_old" placeholder="Old password" tabindex="1" autocomplete="off" required /> 
<input id="NewPassword" runat="server" type="password" class="form-control" name="password" placeholder="New password" tabindex="2" autocomplete="off" required /> 
<input id="NewPasswordRepeat" runat="server" type="password" class="form-control" name="password_confirm" placeholder="Repeat new password" tabindex="3" autocomplete="off" required /> 

Placeholders not displayed on input elements

Эта проблема возникла, когда я только модернизировал проект от .NET4.0 к .NET 4.5.1 и я добавил encoderType к httpRuntime :

<httpRuntime targetFramework="4.5.1" 
      requestValidationMode="4.5" 
      enableVersionHeader="false" 
      encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

При удалении encoderType атрибут AntiXss , входы отображать их заполнители получить:

Placeholders are displayed on input elements

У меня только этот вопрос при использовании Internet Explorer, Chrome и FireFox, кажется, работает просто отлично. Я использую Internet Explorer v11.0.9600.17728, поэтому атрибуты-заполнители поддерживаются или они не работали до использования AntiXssEncoder.

Что может быть причиной этой проблемы?

ответ

1

Проблема была вызвана мета-тег для X-UA-Compatible с несколькими значениями содержания для раннего IE версии рендеринга:

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" /> 

Содержимое этого тега были кодируемого AntiXssEncoder к

<meta http-equiv="X-UA-Compatible" content="IE=9;&#32;IE=8;&#32;IE=7;&#32;IE=EDGE" /> 

Internet Explorer, кажется, не в состоянии работать с & # 32 HTML с ode в содержимом метатега и вырезает значение сразу после IE = 9, в результате чего страница отображается в режиме совместимости для IE9. Поддержка атрибутов placeholder добавлена ​​в IE10, поэтому они не отображались, поскольку документ был отображен для IE9.

Я решил проблему путем удаления пробелов в мета-тег:

<meta http-equiv="X-UA-Compatible" content="IE=9;IE=8;IE=7;IE=EDGE" /> 
+0

Пометить как answerd. Поэтому кому-то еще не нужно будет искать решение для вас. –

+0

Я разместил этот вопрос как [Q & A] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/), так что другие могут найти их решение для подобных задач. К сожалению, SO все еще ограничивает меня принятием моего собственного ответа через 2 дня. – Sjeijoet

+0

Ох. ОК. Затем не забудьте отметить как ответ через 2 дня. :) –

Смежные вопросы