TWebrowser加载大字体页面

时间:2010-10-18 12:56:10

标签: delphi browser

我在组件TwebBrowser中发现了一个奇怪的行为,当我加载某些页面时,它们会显示较大的字体。与Internet Explorer中使用的不同。

查看这些示例图片

此链接http://docwiki.embarcadero.com/RADStudio/en/Main_Page在TWebBrowser中加载了较大的字体,在IE中加载了较小的字体(另一种样式)。

alt text

此页面https://stackoverflow.com/在TWebBrowser组件和IE中加载了相同的样式。

alt text

我在不同的机器上尝试过,同样的事情发生了。

我该如何解决这个问题?这是CSS的问题吗?

2 个答案:

答案 0 :(得分:1)

我认为问题是TWebBrowser组件在兼容模式下运行Internet Explorer。实际上,如果您在Internet Explorer 8及更高版本中打开docwiki页面,则字体很小且令人愉快,与它们在TWebBrowser中的外观形成对比。但是,如果单击Internet Explorer窗口中的“兼容性视图”按钮,您将获得与TWebBrowser组件中相同的大文本。 (众所周知,IE6使用过大的文本。)

根据this MSDN blog entrythe MSDN docs,要控制TWebBrowser控件的兼容模式,请使用注册表:

procedure TForm3.FormCreate(Sender: TObject);
begin

  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', true) then
        WriteInteger(ExtractFileName(Application.ExeName), 8888);
    finally
      Free;
    end;

  WebBrowser1.Navigate('http://docwiki.embarcadero.com/RADStudio/en/Main_Page');
end;

“IE8标准模式”,“IE7标准模式”和“IE8标准模式(强制)”的值分别为8000,7000和8888。因此,上面的代码将强制IE8标准模式。

然而,令人惊讶的是,将模式设置为标准只会使字体更大

答案 1 :(得分:0)

我通常会通过设置ZOOM

来解决此问题
WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom);

您需要使用OLECMDID_GETZOOMRANGE来确定zoom的有效范围。请阅读MSDN documentation上的评论以获取更多信息。