Назад | Перейти на главную страницу

Диагностика Internet Explorer 9 не может отправить форму

У меня проблема с внутренним сайтом интрасети (так что никаких ссылок, извините) и Internet Explorer 9.

Сайт представляет собой приложение Rails 3, использующее HTML 5, в котором нет ничего необычного - никакого javascript, только html и CSS. HTML успешно проходит проверку (с помощью валидатора W3C).

Все пользователи на сайте имеют либо Internet Explorer 8 в Windows XP, либо Internet Explorer 9 в Windows 7. Пользователи с IE8 могут использовать сайт должным образом, как и я использую Chrome.

Пользователи с IE9 могут просматривать страницы, но если они попытаются отправить форму, IE загрузит пустую страницу, где исходный код содержит только теги html, head и body. Затем они обнаруживают, что не могут просматривать ни одну страницу в интрасети, а кнопка возврата IE не работает. Если я использую tcpdump на сервере интрасети, я вижу, что когда пользователь нажимает кнопку «Отправить», данные от клиента не отправляются по сети, поэтому я могу только предположить, что пустая страница (и ее исходный код) генерируются IE.

Я удостоверился, что IE определяет сайт как находящийся в «зоне интрасети», и что эта зона имеет настройку безопасности по умолчанию - средний-низкий. Я пробовал включить режим совместимости (по умолчанию для сайтов интрасети) и выключить его.

Что еще хуже, поведение непоследовательно - форма успешно отправляется примерно в 5% случаев, а в остальное время мы получаем вышеуказанный результат.

Я чувствую, что упускаю что-то фундаментальное - что мне не хватает?

В зависимости от того, какой веб-сервер вы используете, вам также следует проверять журналы сервера на наличие ошибок, если они есть, если браузеры IE9 пытаются отправить данные.

Сможете ли вы успешно отправить заявку, если войдете в инструменты разработчика (F12) и измените режим браузера и режим документа на разные типы браузеров?

Режим совместимости фактически может контролироваться сервером, и это переопределит настройку на клиенте. Вы должны проверить, есть ли в источнике html для:

<meta http-equiv="X-UA-Compatible" content="xxxx" >  

Если это так, вы можете проверить это с помощью content = "IE-edge" или, по крайней мере, убедиться, что он был протестирован в том режиме, который, по вашему мнению, должен использоваться. Я бы также протестировал его в зоне низкой безопасности.

Определение совместимости документов
http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx#SetMode