Програмиране на Delphi
Търсенето на причината показа следното - TWebBrowser използва интерфейси от стари версии на IE! Така например в Delphi XE3 (и, изглежда, във всички по-късни версии), TWebBrowser използва интерфейсите IWebBrowser2 от IE7. По-старите версии (Delphi XE2 и по-долу) използват интерфейса от IE6 и по-долу (Delphi 7 вероятно използва интерфейса от IE4).
Ясно е, че старите версии на IE не разбират новите стандарти като CSS3, HTML5 и т.н., в крайна сметка виждаме не това, което очаквахме. Така че твърдението, че TWebBrowser използва двигателя на версията на IE, която е инсталирана в системата, не е нищо повече от мит.
Решението е да емулирате необходимата версия на IE, за което трябва да поиграете малко в системния регистър. Можете да шаманирате или на ниво цялата система, работейки с дяла HKEY_LOCAL_MACHINE (това ще изисква администраторски права), или на потребителско ниво, работейки с дяла HKEY_CURRENT_USER (не са необходими администраторски права). Освен това трябва да имате предвид дали битовостта на приложението, за което е зададен режимът на емулация, съответства на битовата стойност на операционната система. Нека да разгледаме някои примери.
В избрания раздел(и) трябва да създадете параметър тип DWORD на формуляра:
Например записът:
означава, че IE11 ще бъде емулиран за myapp.exe. Стойностите на параметрите могат да бъдатвиж тук.
Стойност | Описание |
11001 (0x2AF9) | Уеб страниците се изобразяват в режим IE11, независимо от декларирания . |
11000 (0x2AF8) | Уеб страниците, съдържащи стандартни директиви, се показват в режим IE11 (който е по подразбиране за IE11). |
10001 (0x2711) | Уеб страниците се изобразяват в режим IE10, независимо от декларирания . |
10000 (0x02710) | Уеб страниците, съдържащи стандартни директиви, се показват в режим IE10 (който е по подразбиране за IE10). |
9999 (0x270F) | Уеб страниците се показват в режим IE9, независимо от декларирания . |
9000 (0x2328) | Уеб страниците, съдържащи стандартни директиви, се показват в режим IE9 (който е по подразбиране за IE9).Важно: В IE10 уеб страниците, съдържащи стандартни директиви, се показват в режим IE10. |
8888 (0x22B8) | Уеб страниците се изобразяват в режим IE8, независимо от декларирания . |
8000 (0x1F40) | Уеб страниците, съдържащи стандартни директиви, се показват в режим IE8 (който е по подразбиране за IE8).Важно: В IE10 уеб страниците, съдържащи стандартни директиви, се изобразяват в стандартен режим на IE10. |
7000 (0x1B58) | Уеб страниците, които съдържат стандартни директиви, се изобразяват в режим IE7 (който е по подразбиране за приложения, които съдържат контролата WebBrowser). |
- Минималната версия на IE, за която е възможна емулация, е IE 8. Следователно на Windows XP / Server 2003 трябва да инсталирате IE 8 (максималната версия на IE, която можете да инсталиратена по-„древна“ ОС - IE8);
- В Windows 7 и по-нова версия можете да инсталирате IE 11. За да използвате емулация на IE 11, тя (IE11) трябва да бъде инсталирана на системата.
Всичко по-горе обаче не гарантира липсата на проблеми при показване на съдържание в емулираната версия на IE. Така че може да има проблеми, свързани с рисуването върху платното директно в браузъра, бъдете подготвени за това.