Режим сумісності та інтелектуальні налаштування за замовчуванням

У кількох попередніх статтях я розповів, як Internet Explorer 8 відображає сторінки в звичайному, найбільш загальному випадку роботи в режимі сумісності – варіанті, що передбачає найкращу сумісність. Це створює деякі технічні проблеми під час взаємодії з існуючим контентом Інтернету, що зачіпають питання сумісності.

Деякі з сучасних веб-сайтів розраховані на колишнє, менш толерантне до сумісності поведінку Internet Explorer. Саме тому вони не працюють так, як передбачається, з режимом сумісності за замовчуванням в Internet Explorer 8. Щоб побороти цю невідповідність, ми створили режими Compatibility View і спеціальний X-UA-сумісний маркер "EmulateIE7", – функції, які користувач і розробник контенту можуть включити, щоб вміст сайту краще взаємодіяло з браузером. Ця стаття присвячена деяким ситуацій, коли Internet Explorer 8 використовує інтелектуальні налаштування за замовчуванням, щоб забезпечити найкращу сумісність прямо "з коробки", без додаткового втручання користувачів.

Багато сайтів, створені всередині корпоративних мереж (або локальних мереж, наприклад, http://myPortalSite) сумісні з Internet Explorer 7 і очікують від Internet Explorer, що він буде вести себе як 7-а версія. Щоб зберегти сумісність з цими веб-сайтами та додатками, які необхідні для роботи підприємств, Internet Explorer 8 автоматично перемикається в режим сумісності при роботі в зоні "Локальний Інтранет ". Виняток – сам комп'ютер і його адреса (127.0.0.1 + еквівалент по протоколу IPv6). Ресурси за цими адресами за замовчуванням відкриваються в стандартному режимі, щоб надати розробникам веб-контенту і дизайнерам можливість тестувати створювані ними продукти, не використовуючи для цього розміщення в Інтернеті, – для економії ресурсів.

Змінити налаштування локального Інтранету можна, відключивши чек-бокс "Показувати ресурси інтранет в режимі сумісності" в Tools -> Compatibility View Settings.



Адміністратори мереж можуть налаштувати ці опції за допомогою групових політик. Вони можуть створити і керувати списком сайтів, зовнішніх і внутрішніх, для яких краще за все використовувати режим сумісності. Використання цієї політики в сукупності з політикою для локальної інтранет-мережі, в якій Internet Explorer 8 працює в режимі сумісності, допомагає здійснити плавний перехід інформаційної системи підприємств зі стандартного режиму IE7 на стандартний режим IE8.

Іншим випадком, коли Internet Explorer використовує інтелектуальні налаштування за замовчуванням – режими для схем WebOC. Існує безліч програм для Windows, як сучасних, так і не дуже, що використовують керуючий елемент WebBrowser, відомий також як Trident. CorelDraw Graphics Suite, Encarta, Microsoft Office, Nero – ось лише кілька найбільш відомих прикладів. Очевидно, що повне оновлення всього програмного забезпечення на ПК пов'язане з відомими труднощами (розробники повинні написати оновлення, користувач повинен його встановити і т.д.). Це особливо серйозна проблема для т.зв. "Коробкового" ПЗ, яке часто оновити набагато складніше і дорожче, ніж "живе" веб-додаток, не в останню чергу через обраного методу доставки користувачеві, – за допомогою фізичних носіїв замість завантаження по Інтернету. Як і веб-додатки, ці програми налаштовані на певну поведінку Internet Explorer. З метою збереження сумісності, для програм, що використовують IE8 WebOC, сторінки будуть відкриватися в режимі сумісності. Стандартний режим можна задіяти, зробивши такі зміни в реєстрі:


Код:
[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE) SoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION]
    “MyApplication.exe” = dword 8000 (Hex: 0x1F40)

Нарешті, в деяких випадках мова може йти про "жорстких твердженнях", які змусять браузер перейти в режим сумісності. Для тих, хто не дуже добре знайомий з цією концепцією, може виявитися корисною стаття з Вікіпедії, яка розглядає основні моменти:

Твердження може використовуватися для того, щоб незмінність налаштування, прийнятої автором під час створення програми, залишалася незаперечною під час роботи програми.

Головна перевага цього методу полягає в тому, що, якщо помилка відбувається, вона буде негайно зафіксована, на відміну від випадків, коли помилки стають помітні з-за різних сумнівних побічних ефектів. Оскільки помилки спрацьовування тверджень дозволяють легко локалізувати ділянку коду, можна помітити ці місця для подальшого виправлення.

Створюючи новий механізм структурної обробки, вбудований в Internet Explorer 8, ми використовували стандартний метод налаштування шляхів для коду, здійснюваний за допомогою тверджень. Це виявилося дуже важливим моментом при розробці браузера, оскільки давало можливість виділити ділянки коду, що викликали помилки, чи невірні налаштування, зроблені в процесі впровадження нового механізму обробки структур. Наприклад, оригінальне втілення деяких механізмів масштабування використовувало налаштування "зайнята висота" ("consumed height"), внутрішній елемент, що відслідковує актуальну висоту простору, займаного об'єктом, який не міг мати від'ємного значення. Ця установка виявилося помилковою для випадків, коли об'єкт досягав від'ємного значення, виходячи за рамки продиктованих прикордонних полів. Твердження, задає можливі значення для цього параметра, дозволило нам знайти і усунути помилку.

Практично всі твердження були видалені з остаточного варіанту коду. Це означає, що існують певні кодові шляху в новому механізмі обробки структур, де, в разі помилки, процес обробки структури може бути успішно відновлено. Для цих шляхів твердження були збережені. У бета-версії Internet Explorer 8, коли спрацьовували ці жорсткі затвердження для оброблюваних структур, браузер видавав порожню сторінку. Нашим думкою було: краще показати користувачеві порожню сторінку, ніж дозволити виконання коду з помилкою або відображати свідомо невірно оброблену структуру веб-документа. В остаточній версії ми вдосконалили цей підхід: у випадку "жорстких тверджень" сторінка повторно обробляється в режимі сумісності. Іншими словами, ми вважаємо доречним представити проблематичну сторінку так, як це зробила б попередня версія браузера, – для користувача це більш дружній варіант, ніж порожня сторінка.




Нові настройки InetCPL знаходяться тут: Tools -> Internet Options -> Advanced -> Browsing enables / disables auto-recovery.



У випадку помилки весь домен буде відображатися в режимі сумісності – не тільки сторінка або розділ сайту. Це зроблено не випадково: користувачі не повинні відчувати труднощі з переглядом сторінок, якщо, наприклад, якийсь банер, що з'являється на сторінках всього ресурсу, викликає спрацьовування механізму інтерпретації "жорстких тверджень". Нове спливаюче повідомлення вказує, що відбулося перемикання в режим сумісності і пояснює, чому.



Ініціалізація режиму сумісності в результаті автоматичного відновлення сторінки після збою завжди діє тільки в рамках поточної сесії. У разі перегляду вмісту сайтів у режимі InPrivate режим сумісності також діє лише в рамках поточної сесії, у той час як у звичайному режимі браузера одного разу включений режим сумісності продовжує діяти при новому запуску Internet Explorer 8 (для всього домена). Іншими словами, у разі, коли режим сумісності не активований примусово, стандартний режим перегляду відновлюється після перезапуску браузера.

У випадку спрацьовування автозбереження відображення для домену, кнопка режиму сумісності з'являється в активованому стані, а не прихованою або неактивній, як у нормальному режимі. Натискання на кнопку режиму сумісності на "відновленому" сайті примусово виконує перезавантаження в стандартному IE8 режимі. Проблема полягає в тому, що виключення і включення режиму сумісності при відображенні контенту, який викликає спрацьовування механізму обробки "жорстких тверджень", може запустити процес циклічного автозбереження відображення: вміст сайту вимагає включення режиму сумісності, користувач тисне на кнопку режиму сумісності, щоб повернутися до стандартного режиму перегляду, сайт знову включає режим сумісності – і так до нескінченності.

Ресурси, які викликали необхідність автозбереження, заносяться в призначений для користувача список для режиму сумісності (Tools -> Compatibility View Settings) автоматично і беруться в дужки.



Дужки підкреслюють тимчасовий стан. Ці "тимчасові" домени можна видалити, проте повторне примусове внесення такого домену в список режиму сумісності буде "остаточним", тобто без дужок.

Присутність IE8 X-UA-сумісного тега або заголовка HTTP (наприклад, "IE = 8" або "IE = EmulateIE8" + стандартні DOCTYPE) змушує сторінку залишатися в стандартному режимі відображення IE8 незалежно від установок параметрів автозбереження відображення на клієнті (користувач побачить пусту сторінку в разі наявності в структурі сторінки "жорсткого затвердження"). Розробники можуть проаналізувати помилку, примусово завантаживши сторінку в режимі документа за допомогою спеціальної інструментальної панелі розробника, що також скасує автозбереження.

Ми прагнули усунути всі відомі причини неможливості відновлення сторінок в нашому механізмі обробки структур перед тим, як буде випущена остаточна версія. Для ситуацій, які все-таки будуть відбуватися в процесі нормальної експлуатації браузера, передбачено створення звіту за допомогою механізму звітів про помилки Windows Error Reporting (WER). З його допомогою ми можемо отримати стек помилки цілком і, відповідно, відтворити, протестувати і усунути "жорсткі затвердження" так само, як ми це робимо зі збоями або зависаннями.

Конфігурація за замовчуванням, що запускає браузер в стандартному режимі, допомагає дизайнерам і розробникам при створенні нового покоління веб-сторінок, додатків і практичних навичок. У той же самий час ми усвідомлюємо наслідки, а саме – нові проблеми і виклики, що постають перед співтовариством, наприклад, питання сумісності існуючого контенту з новим браузером. Ситуації, що розглядаються в статті, стосуються взаємодії і сумісності браузера і контенту, і являють собою відомості, які можуть допомогти і розробникам, і кінцевим користувачам.

Ми хотіли б почути ваші відгуки з питань сумісності. Будь ласка, зв'яжіться з нами через форму коментарю і розкажіть нам, як працює IE8 з сайтами, які ви відвідуєте і додатками, які ви використовуєте.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*