Мне нужно знать, действительно ли браузер, идентифицирующий себя через строку пользовательского агента как 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 (независимо от того, в каком режиме он находится) и принять решение, не относящееся к содержимому страницы.
Спасибо, что направили меня к ответу с вашими предложениями и ссылками.