【问题标题】:TWebrowser load page with big fontsTWebbrowser 加载大字体页面
【发布时间】:2011-04-26 22:30:11
【问题描述】:

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

查看这些示例图片

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

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

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

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

【问题讨论】:

    标签: delphi browser


    【解决方案1】:

    我通常通过设置ZOOM来解决这个问题:

    WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom);
    

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

    【讨论】:

      【解决方案2】:

      我认为问题在于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 标准模式。

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

      【讨论】:

      • Andreas,感谢您对compatibility mode 的评论,但是为什么有些页面在compatibility mode 中运行时看起来具有相同的样式和字体?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2022-06-10
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多