2013-07-07 3 views
2

Может ли кто-нибудь предоставить фон в компоненте TWebBrowser в отношении стандартов HTML/CSS? Я озадачен тем, что, несмотря на то, что, несмотря на то, что я использую Windows 7 с установленным IE 8, я получаю разные визуализированные результаты при отображении HTML-файла в IE8 по сравнению с тем, что я вижу, когда один и тот же файл HTML отображается в TWebBrowser. Например, псевдоэлементы p:before и p:first-letter полностью игнорируются в файле CSS, когда HTML-файл просматривается в TWebBrowser (Delphi 7), но они выполняются, когда один и тот же файл HTML просматривается в IE8.Delphi с использованием Microsoft Object Doc Object and Control Library (SHDOCVW.DLL)

Возможно ли, что SHDOCVW.DLL настолько старый, что я влияю на рендеринг IE3? Я пытаюсь оборачивать голову тем, почему IE8 часто делает HTML значительно отличающимся от того, что получается при использовании TWebBrowser.

ответ

4

IE8 по умолчанию передает страницы, запущенные в экземплярах элемента управления WebBrowser в стандартном режиме IE7. Разница, которую вы видите, основана на разнице в IE7 стандарте IE8 &.

Когда исполняемый файл загружает экземпляр элемента управления WebBrowser, он сканирует реестр, чтобы проверить, хочет ли исполняемый файл выполнять стандарты IE7 или режим стандартов IE8.

WebBrowser Control Rendering Modes in IE8(deprecated)
WebBrowser Control Rendering Modes in IE8(Updated)

Для запуска управления WebBrowser в стандартном режиме IE7, вставьте следующие значения в реестр:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58) 

Для запуска в стандартном режиме IE8 вставьте следующий параметр реестра:

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40) 

В обоих этих случаях MyApplication.ex e следует заменить именем исполняемого файла, который будет работать с элементами управления WebBrowser в указанном режиме.


Это много сказано, вы можете избежать возиться с реестром все вместе.

Страницы размещаемые в элементе управления WebBrowser можно переопределить рендеринга параметров с помощью X-UA-Compatible мета-тег, чтобы задать режим рендеринга.

, например, чтобы заставить управление IE8 TWebBrowser, чтобы сделать сайт в стандартном использовании Internet Explorer 8:

<META http-equiv="X-UA-Compatible" content="IE=8"> 

Это может быть сделано во всем мире через хост-заголовок или в качестве редактирования каждого документа.

Решение Meta tag может быть устаревшим, я предлагаю вам выполнить шаги реестра.

+0

Спасибо, однако, я добавил '' в разделе заголовка моего HTML и не оказывает никакого влияния на рендеринг псевдо-коды CSS p: before или p: first-letter. Псевдокоды просто игнорируются, когда HTML/CSS отображается в TWebBrowser. – user1527613

+0

Я также пробовал оба варианта реестра, но не имел никакого значения. «p: before» и «p: first-letter» псевдокоды в CSS просто игнорируются TWebBrowser, но они выполняются при просмотре в Chrome, IE и FF. – user1527613

+0

@ user1527613, я отредактировал свой ответ, значения реестра, опубликованные ранее, были устаревшими с момента обновления IE8 1. Также имя ключа было изменено на 'FEATURE_BROWSER_EMULATION'.Проверьте дополнительные ссылки для объяснения. В целом метатег может быть устаревшим, попробуйте новые ключи реестра. Вы также должны сначала проверить, в каком режиме работает ваш браузер IE8, и если в этом играет режим quirks. – Peter