JavaScript : Могу ли я обнаружить IE9, если он находится в режиме совместимости с IE7 или IE8?

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

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

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

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


Отредактировано для добавления…

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

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

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

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

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

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

87
задан Dori 30 April 2011 в 02:09
поделиться