Как проверить с помощью jquery, работает ли Internet Explorer в режиме совместимости - PullRequest
3 голосов
/ 03 января 2012

Поскольку jQuery.browser устарел, а jQuery.support является рекомендуемым инструментом для решения проблем с браузером, каков рекомендуемый способ решения следующей проблемы?

Полноэкранная тема плагина Galleria jquery не работаетправильно (неправильное позиционирование изображения) в IE <8 и в режиме просмотра совместимости IE 8 и 9.Doctype - это HTML 5, и отключение этого режима с помощью </p>

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 

делает свое дело, но как правильно использовать jQuery.support, убедитесь, что версия IE <8 <em>или представление совместимости каким-то образом все еще включено (потому что тогда мы используем другую тему для этих пользователей)?

Обновление: вот код, который мы используем сейчас (внизу HTML).

<script type="text/javascript">
    $(document).ready(function () {
        if ($.browser.msie && $.browser.version < 8) {
            Galleria.loadTheme('js/galleria/themes/classic/galleria.classic.min.js');
            $("#gallery").galleria({
            /* ... */
            });
        } else {
            Galleria.loadTheme('js/galleria/themes/fullscreen/galleria.fullscreen.min.js');
            $("#gallery").galleria({
            /* ... */
            });
        }
    });

</script>

Ответы [ 3 ]

3 голосов
/ 03 января 2012

как мне использовать jQuery.support, чтобы правильно проверить, является ли версия IE <8 <em>или , режим совместимости каким-то образом все еще включен?

jQuery.support не предназначен для обнаружения версий браузера , но предназначен для обнаружения определенных ошибок браузера. Если вы можете определить источник этой ошибки (возможно, проверено свойством .boxModel?), Вместо этого вы могли бы основывать свой оператор if на этой логике.

Функциональное обнаружение является более надежным, чем простое обнаружение версий браузера, поскольку тесты в идеале будут работать с любым браузером с ошибками - не обязательно только с семейством IE.

Если вы не хотите отслеживать источник этой ошибки браузера (и, следовательно, найти правильный .support тест), тогда эта тема, кажется, дает немного более "полный" тест для версии браузера и обнаружение режима совместимости .

Вот код из этой темы:

isIE8CompatMode() {
    return $.browser.msie
        && $.browser.version == 7.0
        && document.documentMode
        && document.documentMode == 8;
}

И, конечно, вы, вероятно, захотите изменить это, чтобы использовать < и > тесты.

Он по-прежнему полагается на $.browser, но, похоже, делает дополнительное обнаружение и для режима совместимости (через специфичное для IE свойство document.documentMode ).

2 голосов
/ 18 мая 2013

Исходя из вышеизложенного, это то, что я использую для документа IE7 или режима совместимости IE7.

var IE7BrowserMode = ($.browser.msie && $.browser.version == 7.0);
var IE7DocumentMode = ($.browser.msie && document.documentMode && document.documentMode == 7);
return( IE7BrowserMode || IE7DocumentMode );
2 голосов
/ 03 января 2012

Это обычный javascript, а не jQuery. Вы можете использовать documentMode. См. Здесь Определение режима совместимости документов . а здесь свойство documentMode .

...