IE8 может перейти в режим IE7, если это необходимо. Как jQuery определяет это? В частности, каково значение $.browser.version
?
Когда IE8 не IE8, что такое $.browser.version?
Ответы (5)
IE8 в режиме IE7 сообщит IE7. НО вы можете проанализировать пользовательский агент и проверить наличие "Trident/4.0". Если вы видите эту строку, значит, вы работаете с IE8.
Объект $.browser
заполняется с использованием концепции, известной как Browser-Sniffing. Проще говоря, это процессы, сканирующие данные из строки пользовательского агента, которую отправляют браузеры, роботы и все, что обращается к странице.
Из-за восприимчивости пользовательского агента к подделке этот объект устарел в более поздних версиях jQuery. Обнаружение объектов и обнаружение функций (см. $.support
) теперь используются предпочтительно.
Например Опера 8.5. используется для идентификации себя как IE: http://www.javascriptkit.com/javatutors/navigator.shtml
$.поддержка:
http://docs.jquery.com/Utilities/jQuery.support
Агенты пользователя:
http://en.wikipedia.org/wiki/User_agent
http://www.zytrax.com/tech/web/browser_ids.htm
Обнаружение объектов:
http://www.quirksmode.org/js/support.html http://developer.apple.com/internet/webcontent/objectdetection.html
Сниффинг браузера:
http://en.wikipedia.org/wiki/Browser_sniffing
Обнаружение функции:
http://docs.jquery.com/Utilities/jQuery.support
support
говорит мне, правильно ли IE поддерживает inline-block
? leadingWhitespace, tbody, objectAll, htmlSerialize, style, hrefNormalized, opacity, cssFloat, scriptEval, noCloneEvent, boxModel
- person nickf; 19.08.2009
Я только что проверил это сам (только что скачал IE8)
Когда вы переводите IE8 в режим совместимости с IE7 с таким метатегом:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Значение $.browser.version
по-прежнему равно 8,0!
JQuery может видеть только то, что ему сообщает браузер.
В режиме IE7 браузер будет сообщать о себе как о IE7, так что это то, что увидит JQuery.
Я разработчик .NET, и мне всегда нравится использовать страницу Sessions.aspx, которую я создан для такого рода проблем
Не стесняйтесь использовать его, я также могу поделиться кодом.
как вы можете видеть из этого скринкаста, который я только что сделал (14 секунд), вы получаете MSIE 8 и MSIE 7, указанные в свойстве javascript navigator, они меняются, когда вы меняете режим совместимости, так как движок, который отображает страницу, немного отличается (помните, что это не 100% двигатель IE7!)
вместо использования встроенного метода jQuery просто используйте обычный javascript
IE8 в режиме IE7
4.0 (совместимый; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
IE8 в собственном режиме
4.0 (совместимый; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30618; .NET CLR 3.5.30729; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
код:
var browserVersion = navigator.appVersion.toLowerCase();
if(browserVersion.contains('msie 8') ) {
// IE 8
}
else if(browserVersion.contains('msie 7') ) {
// IE 7
}
Видео с экрана: http://www.balexandre.com/temp/showFlash.aspx?swf=2009-08-19_1138_ie8ie7.swf&w=952&h=742