Обнаружение и предупреждения, ваши первые и последние линии защиты от адской совместимости.

ужно знать, действительно ли браузер, идентифицирующий себя через строку пользовательского агента как IE7 или IE8, действительно является этими браузерами, или это IE9 в режиме совместимости 7 или 8.

Из того, что я вижу в строке агента пользователя, IE9 в режиме совместимости с IE7 предоставляет строку, идентичную реальной IE7. Есть ли дополнительное свойство / элемент / объект, который я могу проверить, чтобы увидеть, действительно ли это замаскированный IE9?

Я предполагаю, что режим документа не поможет, так как страница, на которую загружен мой скрипт, может вызывать причуды или определенные настройки.

Я надеюсь, что у IE9 будет какое-то свойство, которое существует и может быть протестировано независимо от того, находится ли он в режиме 7, 8 или 9.

Отредактировано, чтобы добавить…

Хорошо, я вижу, где я шел не так. Я использовал раскрывающийся список «Режим браузера» и переключил его на IE8 и IE7 и подумал, что это «Режим совместимости IE8» и «Режим совместимости IE7» соответственно. Это конечно не правда. Режим браузера инструментов разработчика на самом деле переключает его, чтобы он «походил» на те старые браузеры, поэтому правильно сообщать об исходных строках userragent.

Если я выйду из режима браузера в совместимости с IE9 или IE9 и попробую вместо этого варианты выпадающего списка режима документа, то я фактически получу «Trident / 5.0», присутствующий во всех 8 комбинациях (два режима браузера и 4 режима документа). Мне просто нужно избегать выбора режима браузера IE7 и IE8, потому что они действительно (имитируются) IE7 и IE8.

Таким образом, страница, пользователь, не являющийся разработчиком, метатег или список совместимости Microsoft не смогут перевести IE9 в это неидентифицируемое состояние.

Просто используяif(navigator.userAgent.indexOf("Trident/5")>-1) будет достаточно.

Не волнуйтесь, это не для стилей, форматирования, логики или содержимого страницы. Я использую функцию обнаружения для этих вещей. Мне просто нужно определить IE9 (независимо от того, в каком режиме он находится) и принять решение, не относящееся к содержимому страницы.

Спасибо, что направили меня к ответу с вашими предложениями и ссылками.

Ответы на вопрос(7)

Ваш ответ на вопрос