Откройте для себя режим Quirks в IE

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

Во время медленного процесса модернизации мне все еще нужно, чтобы эти пользовательские программы работали и не разваливались.

Есть ли условный комментарий, javascript или другие функции, которые могли бы сообщить мне в интерфейсе, что браузер был переведен в режим причуд вручную?

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

Заранее спасибо.


Редактировать

Хорошо, у меня есть решение js, ну почти... Это будет каждый раз выдавать мне предупреждение, но будет добавлять класс в html только тогда, когда я вручную изменяю режим в ie. Любые идеи?

$(document).ready(function() {
    var quirksMode = (document.compatMode == 'BackCompat');
    var isIE = ($('html').hasClass('ie'));
    if ( quirksMode && isIE ) {
        $('html').addClass('quirks');
            alert('IE Quirks');
        }
});

Хорошо, мне также нужно найти, находятся ли они в режиме документа IE 7 Standard вручную, я знаю, что это беспорядок, но им это нужно, и я думаю, что это достаточно важно, чтобы это произошло. У меня такая же проблема, когда класс не включается, если я не меняю материал вручную, а не только при загрузке. Вот этот код... он в том же готовом документе сверху.

if ( document.documentMode == 7) {
    $('html').addClass('ie7_standard');
    alert('IE 7 Mode');
};

person Ammi J Embry    schedule 30.07.2013    source источник
comment
Я не понимаю вопроса. Вы просите, чтобы сайт сообщал вам удаленно, когда пользователь нажимает кнопку режима совместимости?   -  person isherwood    schedule 30.07.2013
comment
IE позволяет пользователям устанавливать, какие домены будут работать в специальном режиме. [Alt] -> Tools -> Compatibility View Settings ... добавьте нужные сайты. Я не очень хорошо разбираюсь в Active Directory, но я думаю, что вы можете использовать групповую политику, чтобы протолкнуть эти настройки.   -  person BLSully    schedule 30.07.2013
comment
Основываясь на тегах, которые вы указали, я предполагаю, что вы хотите знать, как это сделать в Javascript? Или какой-то другой язык? Если вы хотите узнать о Javascript, это повторение этого вопроса: stackoverflow.com/questions/623047/   -  person wilso132    schedule 30.07.2013
comment
Компания советовала пользователям использовать необычный режим, потому что когда их система обновляла свой IE, наше программное обеспечение переставало работать. Мне нужно начать реализовывать более современный код, чтобы перейти на кросс-браузер. Это нарушает режим причуд для тех пользователей, которые установили его вручную. Мне нужно определить, что пользователь находится в причудливом режиме, желательно, добавив класс к тегу ‹html›, чтобы я мог попытаться свести к минимуму беспорядок, который он создает с современными обновлениями.   -  person Ammi J Embry    schedule 30.07.2013
comment
Похоже, эта компания - их собственный злейший враг.   -  person    schedule 30.07.2013
comment
Честно: создайте современную версию как отдельное приложение (возможно, разместите его в поддомене) и попросите клиентов обновить его, когда оно будет достаточно готово. Поддержание внешнего интерфейса, который является одновременно современным и должен работать в режиме причуд, будет кошмаром.   -  person bfavaretto    schedule 30.07.2013
comment
Направление wilso132 на этот вопрос - stackoverflow.com/questions/623047/ - заставил меня двигаться в правильном направлении. Я приму это как ответ. Как только я заработаю так, как мне нужно, я опубликую ответ здесь. Спасибо за вашу помощь.   -  person Ammi J Embry    schedule 30.07.2013
comment
Добавление * {box-sizing: border-box;} в ваш CSS будет иметь дело с различиями в блочной модели, что покрывает очень большую часть проблем преобразования режима причудливого/стандартного режима. Остальные причуды и ошибки будут кусать вас (неоднократно), но с ними гораздо сложнее справиться. Удачи (она вам понадобится).   -  person Spudley    schedule 30.07.2013


Ответы (1)


var quirksMode = (document.compatMode == 'BackCompat');
var isIE = ($('html').hasClass('ie'));
if ( quirksMode && isIE ) {
    $('html').addClass('quirks');
};
if ( document.documentMode == 7) {
    $('html').addClass('ie7_standard');
};

Это решает эту проблему. Он добавляет класс в html, если у вас есть режим Quirks в IE или IE7 Standards Document Mode, установленный вручную.

F12 в IE не всегда будет отображать новое имя класса, но если у вас есть css, привязанный к этому классу, он будет работать.

Спасибо за вашу помощь всем!

Я использовал этот вопрос (Как определить режим рендеринга браузера для текущей страницы?) в качестве отправной точки, но она кажется немного устаревшей.

person Ammi J Embry    schedule 30.07.2013