Мне нужно знать, действительно ли браузер, который идентифицирует себя через строку пользовательского агента как IE7 или IE8, является этими браузерами, или это IE9 в режиме совместимости 7 или 8.
Из того, что я вижу в строке пользовательского агента, IE9 в режиме совместимости с IE7 предоставляет строку, идентичную реальному IE7. Есть ли дополнительное свойство / элемент / объект, который я могу протестировать, чтобы увидеть, "действительно ли" замаскированный IE9?
Я предполагаю, что режим документа не поможет, так как страница, на которую загружен мой скрипт, может либо вызывать причуды, либо устанавливать определенные настройки.
Я надеюсь, что IE9 будет иметь какое-то свойство, которое существует и может быть протестировано независимо от того, находится ли он в режиме 7, 8 или 9.
Отредактировано, чтобы добавить…
Хорошо, теперь я понимаю, в чем я ошибся. Я использовал раскрывающийся список «Режим браузера» и переключал его на IE8 и IE7 и думал, что это «режим совместимости с IE8» и «режим совместимости с IE7» соответственно. Это, конечно, неправда. Режим браузера инструментов разработчика действительно переключает его, чтобы он «походил» на те старые браузеры, так что совершенно правильно, если будут сообщены исходные строки агента пользователя.
Если я выйду из режима браузера в режиме совместимости с IE9 или IE9 и вместо этого попробую вариант с раскрывающимся списком режима документа, тогда я действительно получу «Trident / 5.0» во всех 8 комбинациях (два режима браузера и 4 режима документов). Мне просто нужно избегать выбора режима браузера IE7 и IE8, потому что они действительно (имитируются) IE7 и IE8.
Таким образом, ни страница, ни пользователь, не являющийся разработчиком, метатег или список совместимости Microsoft не смогут перевести IE9 в это неидентифицируемое состояние.
Достаточно просто использовать if(navigator.userAgent.indexOf("Trident/5")>-1)
.
Не волнуйтесь, это не касается стилей, форматирования, логики или содержимого страницы. Для этого я использую функцию обнаружения. Мне просто нужно обнаружить IE9 (независимо от того, в каком он режиме) и принять решение о несанкционированном содержании страницы.
Спасибо, что направили меня к ответу своими предложениями и ссылками.