2012-10-27 6 views
1

На моей машине для разработчиков приложение ASP.NET MVC 3 отлично работает (IE9, Firefox), но на рабочем сервере, когда я открываю его в IE9, некоторые части кода JavaScript и CSS (например, радиус границы) не входят в IE9. Я подозреваю IIS, потому что на машине разработки на localhost IE9 он работает хорошо. Версия сервера (Win 2008 R2, IIS 7.5) и IE одинаковы на обоих компьютерах. В чем может быть проблема, пожалуйста?IE9 и JavaScript

ответ

4

Это почти не имеет ничего общего с IIS. Что, вероятно, происходит здесь, так это то, что IE9 слишком умен для собственного блага.

IE имеет настройку конфигурации, которая при включении говорит о том, что просмотр возвращается в режим совместимости IE8 при загрузке сайта в локальной интрасети.

Идея этого параметра - упростить работу корпораций с изворотливыми внутренними веб-приложениями до IE9, поскольку теоретически их внутренние сайты будут продолжать работать в режиме IE8.

Это теория. На практике это была плохая идея по ряду причин.

Очень плохо, что настройка включена по умолчанию.

Большинство пользователей никогда не замечают, потому что большинство людей не разрабатывают свои собственные сайты. Но для веб-разработчиков это может быть очень раздражающей функцией, потому что «внутренняя интрасеть» включает localhost. Я рекомендую вам найти настройку и отключить ее.

Фактически никто не будет затронут этим, даже если они используют IE9 с включенным флагом, поскольку они не будут загружать сайт с локального хоста, как вы.

Возможно, некоторые пользователи могут установить свой браузер так, чтобы он всегда показывал режим совместимости (я не могу представить, почему они были бы, но это возможно). Для этих пользователей, это полезно добавить следующую строку кода в <head> раздела:

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

Это говорит IE всегда использовать лучший движок рендеринга он имеет в наличии (так IE9 будет находиться в режиме IE9). Это касается других пользователей. Однако для себя, я думаю, вам все равно придется отключать флаг вручную в ваших настройках, потому что, если я правильно помню, этот параметр локальной интрасети переопределяет заголовок X-UA-Compatible.

Надеюсь, что помогает объяснить ситуацию.

+0

Ding ding ding! У нас есть победитель. Фантастический ответ, спасибо. – enhzflep

+0

Благодарим вас за подробный ответ. – sada

+0

Теперь вот что я называю хорошим объяснением. – kinduff

2

IIS и ASP.NET не имеют никакого отношения к тому, как ваши CSS-рендеринги, поэтому не беспокойтесь об этом.

Для IE9, чтобы отображать их по-другому, я предполагаю, что один из них использует другой режим. Hit F12, чтобы перейти к инструментам разработчика, и вы увидите два варианта изменения режима из IE7, IE8, IE9, и я думаю, что режим quirks или что-то в этом роде. Убедитесь, что оба установлены в IE9, и вы должны увидеть правильный материал CSS.

2

Радиус границы должен быть правильно показан на IE9. Возможно, вам не хватает этого в заголовке вашей страницы

<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
Смежные вопросы