代码之家  ›  专栏  ›  技术社区  ›  IceCold

如何在TWebBrowser中更改字体?

  •  2
  • IceCold  · 技术社区  · 8 年前

    这个问题涉及: Which is the best way to load a string (HTML code) in TWebBrowser?

    我正在尝试用doc.body.style更改twebrowser中的字体。fontFamily,但什么都没发生。字体仍然是TimeNewRoman。

    procedure THTMLEdit.SetHtmlCode(CONST HTMLCode: string);
    VAR
       Doc: Variant;
    begin
     if NOT Assigned(wbBrowser.Document)
     then wbBrowser.Navigate('about:blank');
    
     WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE
       DO Application.ProcessMessages;
    
     Doc := wbBrowser.Document;
     Doc.Clear;
     Doc.Write(HTMLCode);
     doc.body.style.fontFamily:='Arial'; <------ won't work
     Doc.DesignMode := 'On';
     Doc.Close;
    end;
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   kobik    8 年前

    关闭文档后,需要让文档再次交互。 例如。:

    procedure TForm1.SetHtmlCode(CONST HTMLCode: string);
    VAR
       Doc: Variant;
    begin
      if NOT Assigned(wbBrowser.Document)
      then wbBrowser.Navigate('about:blank');
    
      //WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE // not really needed
      //DO Application.ProcessMessages;
    
      Doc := wbBrowser.Document;
      //Doc.Clear; // not needed
      Doc.Write(HTMLCode);
      Doc.Close; 
      Doc.DesignMode := 'On';
    
      WHILE wbBrowser.ReadyState < READYSTATE_INTERACTIVE
      DO Application.ProcessMessages;
    
      doc.body.style.fontFamily:='Arial';
    
      ShowMessage(doc.body.outerHTML); // test it
    end;
    

    但我认为最好的方法是处理 OnDocumentComplete 您知道您有一个有效的文档/正文,并设置样式或任何其他需要的内容。